Sortieren Sie Zeichenfolgen als charakteristische Funktion mit Java

Was ich tun möchte, ist, wenn ich eine Liste von Zeichenfolgen `" Einfügen "," Erstellen "," Löschen "` habe, ich möchte sie in der Reihenfolge sortieren, die ich mag, nicht in der natürlichen Reihenfolge. Insbesondere möchte ich in der Reihenfolge `" drop "," create "," insert "` sortieren.

In diesem Fall ist es in SQL ausreichend, mit der charakteristischen Funktion nach `` `case``` zu sortieren, da die Elemente der Menge begrenzt sind. Ich möchte dasselbe mit Java machen.

Umgebung

java 1.8

Code

Haben Sie eine charakteristische Funktion in Map

Es hat ein charakteristisches Funktionsäquivalent in `` `Map```. Schlüssel ist ein Element der Menge und Wert ist eine Ganzzahl in der Sortierreihenfolge.

Map<String, Integer> map = new HashMap<>();
map.put("drop", 1);
map.put("create", 2);
map.put("insert", 3);

List<String> list = Arrays.asList("insert", "create", "drop");
list.stream()
	.sorted((s1, s2) -> map.get(s1).compareTo(map.get(s2)))
	.forEach(System.out::println);

Ausgabeergebnis.

drop
create
insert

Sortieren Sie die Dateinamen in beliebiger Reihenfolge

Die Situation, in der dies benötigt wurde, war, dass ich die Dateien in einer bestimmten Reihenfolge sortieren wollte. Angenommen, Sie haben eine Gruppe solcher Dateien.

0001_create.sql
0001_drop.sql
0001_insert.sql
0002_create.sql
0002_drop.sql
0002_insert.sql

Ich wollte die Dateiliste in der Reihenfolge Präfix + Suffix in der oben genannten Reihenfolge [drop-> create-> insert] erhalten.

Deshalb der Quellcode.

Map<String, Integer> map = new HashMap<>();
map.put("drop.sql", 1);
map.put("create.sql", 2);
map.put("insert.sql", 3);

Files.walk(Paths.get("files"))
	.filter(Files::isRegularFile)
	.sorted((p1, p2) -> {
		String[] sp1 = p1.getFileName().toString().split("_");
		String[] sp2 = p2.getFileName().toString().split("_");

		String pp1 = sp1[0] + map.get(sp1[1]);
		String pp2 = sp2[0] + map.get(sp2[1]);
		return pp1.compareTo(pp2);})
	.forEach(System.out::println);

Ausgabeergebnis.

files\0001_drop.sql
files\0001_create.sql
files\0001_insert.sql
files\0002_drop.sql
files\0002_create.sql
files\0002_insert.sql

Das ändert nichts an dem, was du tust. Trennen Sie die Dateinamen mit einem Trennzeichen und konvertieren Sie den Suffixteil in eine Ganzzahl in der Sortierreihenfolge mit einer charakteristischen Funktionszuordnung. Wenn Sie sie in der Reihenfolge des Präfixes anhängen, erhalten Sie die Zeichenfolgen "00013", "00012", "00011". "Alles, was Sie tun müssen, ist" compareTo ".

Recommended Posts

Sortieren Sie Zeichenfolgen als charakteristische Funktion mit Java
Java Bubble Sort
Java-Strings bearbeiten
Java Select Sort
[Java] Vorsichtsmaßnahmen beim Vergleichen von Zeichenfolgen mit Zeichenfolgen
Java Insert Sort
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
Installieren Sie Java mit Homebrew
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Bequemer Download mit JAVA
Java Japanisch (Kanji) Sortieren
Schalten Sie Java mit direnv
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Endian-Konvertierung mit JAVA
[Java] Sortieren Sie ArrayList nach Elementen Ihrer eigenen Klasse
Ich habe versucht, Sterling Sort mit Java Collector zu implementieren
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Experimentieren wir mit der Java-Inline-Erweiterung
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Java zum Spielen mit Function
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Lassen Sie uns Excel mit Java betreiben! !!
Java-Versionsverwaltung mit SDKMAN
RSA-Verschlüsselung / Entschlüsselung mit Java 8
Paging PDF mit Java + PDFBox.jar
Objektorientiert mit Strike Gundam (Java)
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Fehlerbehebung mit Java Flight Recorder
Optimieren Sie Java-Tests mit Spock
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Fehler beim Spielen mit Java
Verwenden von Mapper mit Java (Spring)
Java Study Memo 2 mit Progate
Erste Schritte mit Java Basics
Saisonale Anzeige mit Java-Schalter
Verwenden Sie SpatiaLite mit Java / JDBC
Lernen von Java mit Progate Note 1
Vergleichen Sie Java 8 Optional mit Swift
Java-Liste als Gruppe, Sortierung usw.
HTML-Analyse (Scraping) mit JAVA
Führen Sie Java VM mit Web Assembly aus
Blasensortierung mit ArrayList (JAVA)
Bildschirmübergang mit Swing, Java
Java Unit Test mit Mockito
[Java 8] Doppelte Löschung (& doppelte Überprüfung) mit Stream