Java-Sammlung sortieren



5 Answers

Die Frage ist: "Sammlung sortieren". Sie können also Collections.sort(List<T> l, Comparator<? super T> comparator) nicht verwenden Collections.sort(List<T> l, Comparator<? super T> comparator) .

Einige Hinweise:

Für Sammlungsart:

Comparator<String> defaultComparator = new Comparator<String>() {
   @Override
   public int compare(String o1, String o2) {
       return o1.compareTo(o2);
   }
};

Collection<String> collection = getSomeStringCollection();
String[] strings = collection.toArray(new String[collection.size()]);
Arrays.sort(strings, defaultComparator);
List<String> sortedStrings = Arrays.asList(strings);

Collection<String> collection = getSomeStringCollection();
List<String> list = new ArrayList(collection);
Collections.sort(list, defaultComparator);
collection = list; // if you wish

Für Listentyp:

List<String> list = getSomeStringList();
Collections.sort(list, defaultComparator);

Für Settyp:

Set<String> set = getSomeStringSet();
// Than steps like in 'For Collection type' section or use java.util.TreeSet
// TreeSet sample:
// Sorted using java.lang.Comparable.
Set<String> naturalSorted = new TreeSet(set);

Set<String> set = getSomeStringSet();
Set<String> sortedSet = new TreeSet(defaultComparator);
sortedSet.addAll(set);

Java 8-Version. Es gibt die Methode java.util.List#sort(Comparator<? super E> c)

List<String> list = getSomeStringList();
list.sort(defaultComparator);

oder

List<String> list = getSomeStringList();
list.sort((String o1, String o2) -> o1.compareTo(o2));

oder für Typen, die Comparable implementieren:

List<String> list = getSomeStringList();
list.sort(String::compareTo);
Question

Ich habe eine Java-Sammlung:

Collection<CustomObject> list = new ArrayList<CustomObject>();

CustomObject hat jetzt ein id Feld vor der Anzeigeliste. Ich möchte diese Sammlung nach dieser id sortieren.

Kann ich das irgendwie machen?




Verwenden Sie sort .

Du musst das nur tun:

Alle Elemente in der Liste müssen die Vergleichsschnittstelle implementieren.

(Oder verwenden Sie die Version darunter, wie andere bereits sagten.)




Sie können Java Custom Class zum Sortieren verwenden.




Mit Java 8 haben Sie mehrere Möglichkeiten, Methodenreferenzen und den integrierten comparing kombinieren:

import static java.util.Comparator.comparing;

Collection<CustomObject> list = new ArrayList<CustomObject>();

Collections.sort(list, comparing(CustomObject::getId));
//or
list.sort(comparing(CustomObject::getId));






Sie sollten die Comparator Schnittstelle implementieren.

Beispiel:

public class CustomComparator implements Comparator<CustomObject> 
{
    @Override
    public int compare(CustomObject o1, CustomObject o2) {
        return o1.getId().compareTo(o2.getId());
    }
}

Dann können Sie die Collections-Klassen Collections.sort() -Methode verwenden:

Collections.sort(list, new CustomComparator());



Related