Le code suivant pour trier une liste de tableau fonctionne:Java Lambda Expression avec Comparator
ArrayList<Edge> edges = g.edges();
edges.sort((Comparator.comparingInt(Edge::getWeight)).thenComparing(e -> e.getU() + e.getV() + e.getWeight()));
tout en faisant chose même une autre façon provoque une erreur de temps de compilation
ArrayList<Edge> edges = g.edges();
edges.sort(Comparator.comparingInt(f -> f.getWeight()).thenComparing(e -> e.getU() + e.getV() + e.getWeight()));
g.edges()
retourne une liste de tableau de bords .
Pourquoi cela se produit-il que la première méthode fonctionne alors que la seconde ne marche pas? edges.sort(Comparator.comparingInt(f -> f.getWeight())
fonctionne bien comme edges.sort(Comparator.comparingInt(Edge::getWeight))
mais la première méthode ne permet pas d'utiliser .thenComparing(\*lambda exp*\)
tandis que la seconde permet de l'utiliser. Pourquoi cela est-il ainsi?
Et la classe Edge -
static class Edge {
int u;
int v;
int weight;
int getU() {
return u;
}
int getV() {
return v;
}
int getWeight() {
return weight;
}
Edge(int u, int v, int weight) {
this.u = u;
this.v = v;
this.weight = weight;
}
}
pour autant que je peux dire cela ne compte pas comme une réponse à la question de * pourquoi * c'est comme ça. – Eugene