3 votes

Convertir une fonction lambda de Java 8 en Java 7

Je suis nouveau dans le codage et je me suis familiarisé avec les fonctions Lambda de Java 8, mais j'essaie de convertir une partie du code que j'ai écrit en Java 7 pour un projet à l'école et je n'arrive pas à comprendre comment rendre ce morceau de code identique en fonctionnalité mais en Java 7. Désolé si c'est une question stupide mais je n'arrive pas à comprendre. Dois-je écrire une méthode personnalisée et l'appliquer ensuite à ma PriorityQueue.

open = new PriorityQueue<>((Object o1, Object o2) -> {
                Cell c1 = (Cell)o1;
                Cell c2 = (Cell)o2;

                return c1.endCost<c2.endCost?-1:
                        c1.endCost>c2.endCost?1:0;
            });

5voto

Micer Points 936

Essayez d'utiliser l'anonymat Comparator cours ici :

open = new PriorityQueue<Cell>(new Comparator<Cell>() {
            @Override
            public int compare(Cell o1, Cell o2) {
                return c1.endCost < c2.endCost ? -1 :
                        c1.endCost > c2.endCost ? 1 : 0;
            }
        });

Vous pouvez le faire automatiquement dans Intellij Idea. Placez le curseur sur -> et frappez Alt + Enter :

enter image description here

5voto

HBo Points 475

En utilisant Eclipse (je ne connais pas d'autres IDE), vous pouvez le faire automatiquement en utilisant la méthode suivante Ctrl + 1 -> Convertir en création de classe anonyme

Dans votre cas, il s'agit d'un comparateur :

new Compator<>() {
    public int compare(Object o1, Object o2) {
        ...
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X