Sto usando Java Lambda per ordinare un elenco.
come posso ordinarlo al contrario?
Ho visto questo post , ma voglio usare java 8 lambda.
Ecco il mio codice (ho usato * -1) come 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
invece diforEach
forEachOrdered
, come suggerisce il nome, ci tiene all'ordine degli incontri che è rilevante in quanto si desidera saltare un certo numero di file più recenti che si basa sull'ordine "ordinato per tempo di modifica" .
sort
→ skip
→ (non ordinata) forEach
dovrebbe funzionare, è corretta e che è effettivamente implementata per funzionare in questo modo nei JRE di oggi, ma nel 2015, quando sono stati fatti i commenti precedenti, era davvero un problema (come puoi leggere in questa domanda ).
-1 * answer
conanswer
, l'ordine cambierà al contrario di quello che era-1 * ...
.