J'utilise java lambda pour trier une liste.
comment puis-je le trier de manière inversée?
J'ai vu ce post , mais je veux utiliser java 8 lambda.
Voici mon code (j'ai utilisé * -1) comme un 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
place deforEach
forEachOrdered
comme son nom l' indique, soins sur ordre de rencontre qui est pertinent que vous voulez sauter un certain nombre de nouveaux fichiers qui repose sur le « trié par date de modification » ordre .
sort
→ skip
→ (non ordonné) forEach
devrait fonctionner, est correcte et qu'elle est effectivement implémentée pour fonctionner de cette manière dans les JRE d'aujourd'hui, mais en 2015, lorsque les commentaires précédents ont été faits, il était en effet un problème (comme vous pouvez le lire dans cette question ).
-1 * answer
paranswer
, l'ordre changera pour inverser ce qu'il était avec-1 * ...
.