Java zum Sortieren von Kleinbuchstaben vor Großbuchstaben strings
Ich soll die Dateien werden in der Reihenfolge Ihrer abs-Pfad-Namen, aber ich will den Kleinbuchstaben sortiert werden, bevor die Großbuchstaben. Beispiel: sagen wir ich habe 4 Dateien:
files2.add("b");
files2.add("A");
files2.add("a");
files2.add("B");
Bestellung mit diesem code ist: [A, B a, b]
Ich will es sein: [a, a, b, B]
import java.io.File;
import java.util.*;
public class Abs {
public ArrayList<File> getOrder(ArrayList<File> files) {
Collections.sort(files, new Comparator<File>() {
public int compare(File file1, File file2) {
return file1.getAbsolutePath().compareTo(file2.getAbsolutePath());
}
});
return files;
}
}
- Sollte "k.txt" kleiner als "G.txt"?
- Ist diese beschränkt zu sein, die in Latein - /Rnglish Zeichensatz?
- Wenn Sie name groß-und Kleinbuchstaben char gemischt? Beispiel AaAa.txt und aAAA.txt? das sollte man der erste sein?
- Eine Möglichkeit könnte sein, überschreiben Sie die compareTo-Methode. Vergleichen Sie die zwei Buchstaben an der aktuellen position des Strings in Kleinbuchstaben. Wenn Sie gleich sind prüfen Sie Ihre normalen Werte und bevorzugt die Kleinschreibung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen die Collator-Klasse.
Müssen Sie sorgfältig Lesen, was diese Konstanten bedeuten, aber einer von Ihnen sollte es möglich machen, für Sie zusammengestellt, Kleinbuchstaben vor den Großbuchstaben.
Können Sie wahrscheinlich verwenden, Bibliothek oder utility-Klassen mit diesem Verhalten, oder Sie können bauen Sie Ihre eigenen Komparator.
compare ignore case
dann nur wenn die gleich sindcompare case
. wenn ich das richtig verstehe: damit sollteSmith
undsmith
benachbart in der sortierten Liste. Gut gemacht.Könnten Sie implementieren Ihre eigenen
Comparator
, die wiederum verwendet eineCollator
. Sehen Beispiel.Versuchen Sie, diese einfache Implementierung :
Wie vorgeschlagen, die von anderen,
Collator
tut, was Sie wollen. Schreiben einer jener collator-Regeln sah ein bisschen beängstigend, aber es sieht aus wie das standard-EnglischCollator
genau das tut, was Sie wollen:gibt:
Sammlungen.sort(); können Sie übergeben Sie einen benutzerdefinierten comparator für die Sortierung. Für die groß /Kleinschreibung bei der Bestellung von String-Klasse stellt einen static final comparator genannt CASE_INSENSITIVE_ORDER.
Also in deinem Fall alles, was notwendig ist:
Sammlungen.Sortieren(caps, String.CASE_INSENSITIVE_ORDER);