我有以下对象集合:
Set<MyClass> test = new LinkedHashSet<MyClass>();
但是 MyClass
不会覆盖 hashcode
和 equals
方法。
即使 MyClass 不覆盖 hashCode
和 equals
方法,上面的集合也可以只有唯一对象吗?
最佳答案
equals
的默认实现是检查身份(即使用 ==
运算符)。您的 LinkedHashSet
(或任何其他 HashSet
,在这种情况下)将包含唯一的对象,您将无法添加相同的对象两次。但是,如果您以完全相同的方式创建两个实例(例如,将相同的参数传递给构造函数),您的集合仍将包含它们,因为它们不是equals
。
关于java - 没有覆盖 hashCode() 和 equals() 的对象上的 LinkedHashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414569/