考虑以下 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
我的问题是澄清之一。有人可以帮助理解这一点吗?为什么 aLinkedHashSet
会被认为是相等的,而相同的则LinkedList
不会呢?我假设定义List
并Set
发挥作用,但我不确定。
基本上,我的意思是,如果您认为Set
s 相同,您是否也认为List
s 相同?反之亦然(假设没有重复元素)?