Comment utiliser un Java8 lambda pour trier un flux dans l'ordre inverse?

Je suis en utilisant java lambda pour trier une liste.

comment puis-je trier dans le sens inverse?

J'ai vu ce post, mais je veux l'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());
  • Qu'entendez-vous par "ordre inverse"? Si vous remplacez -1 * answer avec answer, la commande de changement à l'inverse de ce qu'il était avec -1 * ....
  • Méfiez-vous! Tout votre code suggère que vous souhaitez utiliser forEachOrdered au lieu de forEach
  • pourquoi est-ce? pouvez-vous expliquer?
  • Suivez les liens. Simplement dit, forEachOrdered, comme son nom l'indique, s'occupe de la rencontre de commande, ce qui est pertinent que vous voulez sauter un certain nombre de nouveau les fichiers qui s'appuie sur le “triées par date de modification de commande”.
  • Je ne suis pas entièrement l'obtenir. comme le forEach dans mon exemple qui se passe après la skip. sens après mon filtre, je ne se soucient pas de l'ordre
  • Un peu en retard, je tiens à souligner que votre compréhension de la façon sortskip→(non ordonnée)forEach devrait fonctionner, est correct et qu'il est en effet mis en place pour travailler de cette façon aujourd'hui, dans le Jre, mais de retour en 2015, lorsque les commentaires précédents ont été faits, il a été en effet un problème (comme vous pourrez le lire dans cette question).

InformationsquelleAutor Elad Benda2 | 2015-02-19