我正在使用Java lambda对列表进行排序。
如何以相反的方式对其进行排序?
我看到了这篇文章,但是我想使用java 8 lambda。
这是我的代码(我用* -1)作为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());
谨防!您的所有代码都建议您使用
—
Holger 2015年
forEachOrdered
而不是forEach
这是为什么?你可以解释吗?
—
Elad Benda2 2015年
按照链接。简而言之,
—
Holger 2015年
forEachOrdered
顾名思义,您关心的是遇到顺序,因为您要跳过一定数量的最新文件,而这些文件取决于“按修改时间排序”的顺序。
-1 * answer
为answer
,则顺序将变为与之相反的顺序-1 * ...
。