Wenn Sie frei sind, zu entscheiden, und wenn Ihre Anwendung ist möglicherweise komplexer, dann könnten Sie den code ändern, verwenden Sie ein TreeSet statt. Diese Art der Sammlung sortiert die Einträge nur, wenn Sie eingefügt werden. Keine Notwendigkeit zum Aufruf von sort().
Dieser hat einige subtile, aber wichtige Vorteile:
Es ist einfach kürzer. Nur eine Zeile kürzer, obwohl.
Nie über ist diese Liste eigentlich sortiert jetzt becaude ein TreeSet ist immer sortiert, egal, was Sie tun.
Können Sie keine doppelten Einträge. Je nach situation kann dies ein Profi oder con. Wenn Sie brauchen, Duplikate, halten Sie sich an Ihre Liste.
Ein erfahrener Programmierer sieht TreeSet<String> countyNames und sofort weiß: dies ist eine sortierte Sammlung von Strings ohne Duplikate, und ich kann sicher sein, dass dies wahr ist in jedem moment. So viel information in einer kurzen Erklärung.
Echte Leistung zu gewinnen, in einigen Fällen. Wenn Sie eine Liste verwenden, und legen Sie Werte sehr oft, und die Liste ausgelesen werden kann zwischen jenen, die Einfügungen, dann haben Sie zum Sortieren der Liste nach jeder Einfügung. Das set macht das gleiche, aber es funktioniert viel schneller.
Verwendung der richtigen Sammlung für die richtige Aufgabe ist es einen Schlüssel zu schreiben, kurz und bug-free code. Es ist nicht so demonstrativ in diesem Fall, weil Sie nur sparen eine Zeile. Aber ich habe aufgehört zu zählen, wie oft sehe ich jemanden mit einer Liste, wenn Sie wollen, um sicherzustellen, gibt es keine duplictes, und dann bauen Sie diese Funktionalität selbst. Oder noch schlimmer, mit zwei Listen, wenn Sie wirklich brauchen eine Karte.
Versteh mich nicht falsch: Verwenden von Sammlungen.Sortieren ist nicht ein Fehler oder ein Manko. Aber es gibt viele Fälle, wenn das TreeSet ist viel sauberer.
Verwenden Sie die zwei argument für Collections.sort. Sie möchten eine geeignete Comparator behandelt Fall angemessen (d.h. nicht lexikalisch, nicht UTF16-Bestellung), wie Sie erhältlich sind durch java.text.Collator.getInstance.
Es sei denn, Sie werden Sortieren von Zeichenketten in einem Akzent-freies Englisch nur, Sie wollen wahrscheinlich verwenden Sie ein Collator. Es wird richtig Sortieren Diakritika ignorieren kann, Fall und andere sprachspezifische Sachen:
//Here is sorted List alphabetically with syncronizedpackage com.mnas.technology.automation.utility;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.List;import org.apache.log4j.Logger;/**
*
* @author manoj.kumar
*/publicclassSynchronizedArrayList{staticLogger log =Logger.getLogger(SynchronizedArrayList.class.getName());@SuppressWarnings("unchecked")publicstaticvoid main(String[] args){List<Employee> synchronizedList =Collections.synchronizedList(newArrayList<Employee>());
synchronizedList.add(newEmployee("Aditya"));
synchronizedList.add(newEmployee("Siddharth"));
synchronizedList.add(newEmployee("Manoj"));Collections.sort(synchronizedList,newComparator(){publicint compare(Object synchronizedListOne,Object synchronizedListTwo){//use instanceof to verify the references are indeed of the type in questionreturn((Employee)synchronizedListOne).name
.compareTo(((Employee)synchronizedListTwo).name);}});/*for( Employee sd : synchronizedList) {
log.info("Sorted Synchronized Array List..."+sd.name);
}*///when iterating over a synchronized list, we need to synchronize access to the synchronized listsynchronized(synchronizedList){Iterator<Employee> iterator = synchronizedList.iterator();while(iterator.hasNext()){
log.info("Sorted Synchronized Array List Items: "+ iterator.next().name);}}}}classEmployee{String name;Employee(String name){this.name = name;}}
//Assecnding order
listOfCountryNames.stream().sorted().forEach((x)->System.out.println(x));//Decending order
listOfCountryNames.stream().sorted((o1, o2)-> o2.compareTo(o1)).forEach((x)->System.out.println(x));
Vorausgesetzt, dass diese Zeichenfolgen sind, verwenden Sie die nützliche statische Methode
Sortieren
...InformationsquelleAutor der Antwort Thilo
Lösung mit Sammlungen.Sortieren
Wenn Sie gezwungen sind, verwenden Sie die Liste, oder, wenn Ihr Programm hat eine Struktur, wie
dann Thilos Antwort wird der beste Weg, es zu tun. Wenn Sie es kombinieren mit der Beratung von Tom Hawtin - tackline erhalten Sie:
Lösung mit einem TreeSet
Wenn Sie frei sind, zu entscheiden, und wenn Ihre Anwendung ist möglicherweise komplexer, dann könnten Sie den code ändern, verwenden Sie ein TreeSet statt. Diese Art der Sammlung sortiert die Einträge nur, wenn Sie eingefügt werden. Keine Notwendigkeit zum Aufruf von sort().
Randnotiz, warum ich lieber die TreeSet
Dieser hat einige subtile, aber wichtige Vorteile:
TreeSet<String> countyNames
und sofort weiß: dies ist eine sortierte Sammlung von Strings ohne Duplikate, und ich kann sicher sein, dass dies wahr ist in jedem moment. So viel information in einer kurzen Erklärung.Verwendung der richtigen Sammlung für die richtige Aufgabe ist es einen Schlüssel zu schreiben, kurz und bug-free code. Es ist nicht so demonstrativ in diesem Fall, weil Sie nur sparen eine Zeile. Aber ich habe aufgehört zu zählen, wie oft sehe ich jemanden mit einer Liste, wenn Sie wollen, um sicherzustellen, gibt es keine duplictes, und dann bauen Sie diese Funktionalität selbst. Oder noch schlimmer, mit zwei Listen, wenn Sie wirklich brauchen eine Karte.
Versteh mich nicht falsch: Verwenden von Sammlungen.Sortieren ist nicht ein Fehler oder ein Manko. Aber es gibt viele Fälle, wenn das TreeSet ist viel sauberer.
InformationsquelleAutor der Antwort Lena Schimmel
Können Sie ein neues erstellen sortiert kopieren mit Java 8 Stream oder Guave:
Weitere option ist, um eine Sortierung in-place über die Collections-API:
InformationsquelleAutor der Antwort Vitalii Fedorenko
Besser spät als nie! Hier ist, wie können wir es tun-
InformationsquelleAutor der Antwort Tirath
Verwenden Sie die zwei argument für
Collections.sort
. Sie möchten eine geeigneteComparator
behandelt Fall angemessen (d.h. nicht lexikalisch, nicht UTF16-Bestellung), wie Sie erhältlich sind durchjava.text.Collator.getInstance
.InformationsquelleAutor der Antwort Tom Hawtin - tackline
Es sei denn, Sie werden Sortieren von Zeichenketten in einem Akzent-freies Englisch nur, Sie wollen wahrscheinlich verwenden Sie ein
Collator
. Es wird richtig Sortieren Diakritika ignorieren kann, Fall und andere sprachspezifische Sachen:Können Sie die collator Stärke finden Sie in der javadoc.
Hier ist ein Beispiel für Slowakisch:
InformationsquelleAutor der Antwort Oliv
Hier ist, was Sie suchen
InformationsquelleAutor der Antwort prashant
absteigend alphabet:
InformationsquelleAutor der Antwort norbDEV
Mithilfe
Collections.sort()
können wir Sortieren einer Liste.Ausgabe:
InformationsquelleAutor der Antwort ASR
In einer Zeile, die mit Java 8:
InformationsquelleAutor der Antwort Victor Petit
InformationsquelleAutor der Antwort
Gleiche in JAVA 8 :-
InformationsquelleAutor der Antwort Vijay Gupta
Können Sie versuchen, mit einer Methode, die ich gemacht habe.
String key
- werden die Reihenfolge, die Sie wollen, und in diesem Fall in alphabetischer Reihenfolge. Stellen Sie einfach "abc...".String list[]
- die Liste, die Sie setzen wollen, um mit dem Schlüssel.int index
- set B. 0, setzt den offset für den Schlüssel.InformationsquelleAutor der Antwort Doout