Considérez le SSCCE suivant:
public static void main(Ssortingng[] args) { LinkedHashSet set1 = new LinkedHashSet(); set1.add("Bob"); set1.add("Tom"); set1.add("Sam"); LinkedHashSet set2 = new LinkedHashSet(); set2.add("Sam"); set2.add("Bob"); set2.add("Tom"); System.out.println(set1); System.out.println(set2); System.out.println(set1.equals(set2)); }
Cela imprime:
[Bob, Tom, Sam] [Sam, Bob, Tom] true
Pourtant, si vous changez LinkedHashSet
en LinkedList
:
public static void main(Ssortingng[] args) { LinkedList set1 = new LinkedList(); set1.add("Bob"); set1.add("Tom"); set1.add("Sam"); LinkedList set2 = new LinkedList(); set2.add("Sam"); set2.add("Bob"); set2.add("Tom"); System.out.println(set1); System.out.println(set2); System.out.println(set1.equals(set2)); }
cela produit:
[Bob, Tom, Sam] [Sam, Bob, Tom] false
Ma question est une clarification. Quelqu’un peut-il aider à donner un sens à cela? Pourquoi un LinkedHashSet
serait-il considéré comme égal alors que la même LinkedList
ne le serait pas? Je suppose que la définition de List
and Set
joue un rôle, mais je ne suis pas sûr.
En gros, si vous considérez que les Set
sont identiques, ne considérez-vous pas que la List
est identique? Et vice-versa (en supposant qu’il n’y ait pas d’éléments en double)?