LinkedHashSet .equals () vs LinkedList .equals () con los mismos elementos pero diferente orden
Considere el siguiente SSCCE:
public static void main(String[] args) {
LinkedHashSet<String> set1 = new LinkedHashSet<>();
set1.add("Bob");
set1.add("Tom");
set1.add("Sam");
LinkedHashSet<String> 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));
}
Esto imprime:
[Bob, Tom, Sam]
[Sam, Bob, Tom]
true
Sin embargo, si cambiasLinkedHashSet
aLinkedList
:
public static void main(String[] args) {
LinkedList<String> set1 = new LinkedList<>();
set1.add("Bob");
set1.add("Tom");
set1.add("Sam");
LinkedList<String> 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));
}
produce:
[Bob, Tom, Sam]
[Sam, Bob, Tom]
false
Mi pregunta es de aclaración. ¿Alguien puede ayudar a darle sentido a esto? ¿Por qué unLinkedHashSet
ser considerado igual, mientras que el mismoLinkedList
no lo haría? Estoy asumiendo la definición deList
ySet
juega un papel, pero no estoy seguro.
Básicamente, digo que si consideras elSet
S ser lo mismo, ¿no considerarías elList
s ser lo mismo también? ¿Y viceversa (suponiendo que no haya elementos duplicados)?