LinkedHashSet .equals () vs LinkedList .equals () avec les mêmes éléments mais dans un ordre différent

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)?