Ich bin daran interessiert, eine Liste aus einem Stream zu sortieren. Dies ist der Code, den ich verwende:
list.stream()
.sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue()))
.collect(Collectors.toList());
Vermisse ich etwas Die Liste wird nicht sortiert.
Es sollte die Listen nach dem Element mit dem niedrigsten Wert sortieren.
for (int i = 0; i < list.size(); i++)
{
System.out.println("list " + (i+1));
print(list, i);
}
Und die Druckmethode:
public static void print(List<List> list, int i)
{
System.out.println(list.get(i).getItem().getValue());
}
quelle
list.sort(Comparator.comparing(o -> o.getItem().getValue()));
war neu für mich. Toll!Java 8 bietet verschiedene API-Methoden für Dienstprogramme, mit denen wir die Streams besser sortieren können.
Wenn Ihre Liste eine Liste von Ganzzahlen (oder Double, Long, String usw.) ist, können Sie die Liste einfach mit den von Java bereitgestellten Standardkomparatoren sortieren.
Komparator im laufenden Betrieb erstellen:
Mit dem von Java 8 bereitgestellten Standardkomparator, wenn kein Argument an sorted () übergeben wurde:
Wenn Sie dieselbe Liste in umgekehrter Reihenfolge sortieren möchten:
Wenn Ihre Liste eine Liste benutzerdefinierter Objekte ist, dann:
Komparator im laufenden Betrieb erstellen:
Verwenden der Comparator.comparingLong () -Methode (Wir haben compareDouble (), compareInt () -Methoden auch):
Verwenden der Comparator.comparing () -Methode (generische Methode, die anhand der bereitgestellten Getter-Methode vergleicht):
Mit der thenComparing () -Methode können wir auch verketten:
Personenklasse
quelle
Comparator.comparing*
ist der Weg besser und JDK8 orientierter AnsatzEs scheint gut zu funktionieren:
Beispiel für Eingabe / Ausgabe
Sind Sie sicher, dass Sie keine Liste anstelle von
sortedList
[im obigen Beispiel] überprüfen, dh Sie speichern das Ergebnisstream()
in einem neuenList
Objekt und überprüfen dieses Objekt?quelle
**** Dies ist hilfreich, um die verschachtelten Kartenobjekte wie Karte zu sortieren.> Hier habe ich nach dem Objektpreis sortiert.
quelle
Dies ist ein einfaches Beispiel:
Möglicherweise erhält Ihre IDE nicht die JDK 1.8- oder höhere Version, um den Code zu kompilieren.
Stellen Sie die Java-Version 1.8 für Your_Project > Eigenschaften> Projektfacetten> Java-Version 1.8 ein
quelle