Ich benutze Java Lambda, um eine Liste zu sortieren.
Wie kann ich es umgekehrt sortieren?
Ich habe diesen Beitrag gesehen , möchte aber Java 8 Lambda verwenden.
Hier ist mein Code (ich habe * -1 verwendet) als Hack
Arrays.asList(files).stream()
.filter(file -> isNameLikeBaseLine(file, baseLineFile.getName()))
.sorted(new Comparator<File>() {
public int compare(File o1, File o2) {
int answer;
if (o1.lastModified() == o2.lastModified()) {
answer = 0;
} else if (o1.lastModified() > o2.lastModified()) {
answer = 1;
} else {
answer = -1;
}
return -1 * answer;
}
})
.skip(numOfNewestToLeave)
.forEach(item -> item.delete());
forEachOrdered
anstelle vonforEach
forEachOrdered
kümmert sich, wie der Name schon sagt, um die Reihenfolge der Begegnungen, die relevant ist, da Sie eine bestimmte Anzahl der neuesten Dateien überspringen möchten, die von der Reihenfolge "Sortiert nach Änderungszeit" abhängt .
sort
→ skip
→ (ungeordnet) forEach
funktionieren sollte, richtig ist und dass es tatsächlich so implementiert ist, dass es in den heutigen JREs funktioniert, aber bereits 2015, als die vorherigen Kommentare abgegeben wurden, ist es so war in der Tat ein Problem (wie Sie in dieser Frage lesen können ).
-1 * answer
mitanswer
, wird die Reihenfolge der umgekehrt ändern , was mit ihm war-1 * ...
.