我有两组LinkedHashSet对象,在这个对象中,我有其他具有更多LinkedHashSet的对象。
我的问题是:
equals方法(默认)是否检查所有内部HashSets是否都是相同的?还是我要重写它?
发布于 2012-12-09 20:43:49
默认情况下,它将确保HashSets的内容等于()。LinkedHashSet也是有序的,但这在hashCode中或等于中没有使用,因此它们可以有不同的顺序,并且仍然等于= true。
简而言之,对于HashSets的等号来说,顺序并不重要,而“相等”并不是“相同的”。“相同”通常指的是同一个对象。
发布于 2012-12-09 20:45:36
Set.equals()的契约是每个集合的每个成员都包含在另一个集合中。每个contains测试依赖于集合中对象的equals()方法。
该规范要求任何Set实现都不能依赖equals()的默认实现,即对象标识。(就Set规范而言,集合中的对象可以自由使用默认的Object.equals()来测试等式。但是,如果您有一组集合,则(外部)集中的对象本身就是Set对象,因此受与equals()有关的相同Set契约的约束。)
有关更多信息,请参见Set.equals()和Set.contains(Object)的文档。
https://stackoverflow.com/questions/13791601
复制相似问题