LinkedHashSet Equals方法

时间:2012-12-09 20:41:05

标签: java hashset linkedhashset

我有两组LinkedHashSet个对象,在这个对象中,我有其他对象有更多LinkedHashSet

我的问题是:

equals方法(默认)是否检查所有内部HashSets是否相同?或者我是否必须覆盖它?

2 个答案:

答案 0 :(得分:7)

默认情况下,它将确保HashSet的内容为equals()。 LinkedHashSet也是有序的,但是这不用于hashCode或equals,所以它们可以有不同的顺序,仍然是equals = true。

简而言之,顺序与HashSets的等号无关,而“equals”不是“相同”。 “相同”通常意味着它是同一个对象。

答案 1 :(得分:1)

Set.equals()的合同是每个集合的每个成员都包含在另一个成员中。每个contains测试都依赖于集合中对象的equals()方法。

此规范要求Set实现不能依赖于equals()的默认实现,即对象标识。 (就Set规范而言,集合中的对象可以自由地使用默认的Object.equals()来测试相等性。但是如果你有一组集合,那么(外部)集合中的对象它们本身就是Set个对象,因此受Set equals()的{​​{1}}合同约束。

有关详细信息,请参阅Set.equals()Set.contains(Object)的文档。