我有两组LinkedHashSet
对象,在这些对象中,我还有其他具有更多LinkedHashSet
.
我的问题是:
该equals
方法(默认)是否检查所有内部HashSets
是否相同?还是我必须覆盖它?
我有两组LinkedHashSet
对象,在这些对象中,我还有其他具有更多LinkedHashSet
.
我的问题是:
该equals
方法(默认)是否检查所有内部HashSets
是否相同?还是我必须覆盖它?
默认情况下,它将确保 HashSet 的内容是 equals()。LinkedHashSet 也是有序的,但这在 hashCode 或 equals 中没有使用,因此它们可以有不同的顺序,但仍然是 equals = true。
简而言之,对于HashSets的equals,顺序无关紧要,“equals”不是“same”。“相同”通常表示其相同的对象。
契约Set.equals()
是每个集合的每个成员都包含在另一个集合中。每个contains
测试都依赖于equals()
集合中对象的方法。
该规范要求任何Set
实现都不能依赖于 的默认实现equals()
,即对象标识。(就Set
规范而言,集合中的对象可以自由使用默认值Object.equals()
来测试相等性。但是如果您有一组集合,则(外部)集合中的对象本身就是Set
对象,因此受到相同的约束Set
合同有关equals()
。)
有关详细信息,请参阅 和 的Set.equals()
文档Set.contains(Object)
。