【发布时间】:2014-06-11 16:44:57
【问题描述】:
考虑以下 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
我的问题是澄清问题之一。有人可以帮助理解这一点吗?为什么LinkedHashSet 会被视为相等,而相同的LinkedList 不会?我假设List 和Set 的定义起作用,但我不确定。
基本上,我是说如果你认为Sets 是一样的,你会不会认为Lists 也是一样的?反之亦然(假设没有重复元素)?
【问题讨论】:
标签: java collections linked-list equals linkedhashset