次の 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));
}
これは以下を出力します:
[Bob, Tom, Sam]
[Sam, Bob, Tom]
true
しかし、次のように変更LinkedHashSetした場合LinkedList:
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));
}
それは生成します:
[Bob, Tom, Sam]
[Sam, Bob, Tom]
false
私の質問は明確化の 1 つです。誰かがこれを理解するのを助けることができますか? LinkedHashSetaは等しいと見なされるのに、同じとは見なされないのはなぜLinkedListですか? Listand が役割を果たしているという定義を仮定していますがSet、よくわかりません。
基本的にはsを同じと考えればSetsも同じと考えないListのか?逆もまた然り(要素が重複していないと仮定)?