Я использую Java-лямбду для сортировки списка.
как я могу отсортировать его в обратном порядке?
Я видел этот пост , но я хочу использовать Java 8 лямбда.
Вот мой код (я использовал * -1) как взломать
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вместоforEach
forEachOrderedкак следует из названия, заботится о порядке столкновения , которая имеет отношение , как вы хотите , чтобы пропустить определенное количество новых файлов, опирающиеся на «отсортированный по времени модификации» порядка .
sort→ skip→ (неупорядоченный) forEachдолжен работать, правильно и что оно действительно реализовано для работы таким образом в сегодняшних JRE, но еще в 2015 году, когда были сделаны предыдущие комментарии, оно была действительно проблема (как вы можете прочитать в этом вопросе ).
-1 * answerнаanswer, порядок изменится на обратный-1 * ....