Estou usando o java lambda para classificar uma lista.
como posso classificá-lo de maneira inversa?
Eu vi esse post , mas quero usar o java 8 lambda.
Aqui está o meu código (eu usei * -1) como um 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
vez deforEach
forEachOrdered
como o nome sugere, preocupações sobre a ordem encontro que é relevante como você quiser pular um certo número de mais novos arquivos que conta com a “classificado por data de modificação” fim .
sort
→ skip
→ (não ordenado) forEach
deve funcionar está correto e que de fato foi implementado para funcionar dessa maneira nos JREs de hoje, mas em 2015, quando os comentários anteriores foram feitos, foi realmente um problema (como você pode ler nesta pergunta ).
-1 * answer
poranswer
, o pedido mudará para o reverso do que era-1 * ...
.