Я використовую java lambda для сортування списку.
як я можу сортувати її зворотним способом?
Я бачив цю публікацію , але хочу використовувати 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
має працювати, є правильним і що воно реально реалізоване таким чином у сучасних ЄРП, але ще в 2015 році, коли були зроблені попередні коментарі, це насправді було проблемою (як ви можете прочитати в цьому запитанні ).
-1 * answer
зanswer
, порядок зміниться на протилежне , що це було з-1 * ...
.