没有覆盖 hashCode() 和 equals() 的对象上的 LinkedHashSet
LinkedHashSet on objects without overridden hashCode() and equals()
我有以下对象集合:
Set<MyClass> test = new LinkedHashSet<MyClass>();
但 MyClass
不会覆盖 hashcode
和 equals
方法。
即使 MyClass 不覆盖 hashCode
和 equals
方法,上面的集合也可以只有唯一对象吗?
equals
的默认实现是检查身份(即使用 ==
运算符)。您的 LinkedHashSet
(或任何其他 HashSet
,在这种情况下)将包含独特的对象,您将无法两次添加相同的对象。但是,如果您以完全相同的方式创建两个实例(例如,将相同的参数传递给构造函数),您的集合仍将包含它们,因为它们不是 equals
.
我有以下对象集合:
Set<MyClass> test = new LinkedHashSet<MyClass>();
但 MyClass
不会覆盖 hashcode
和 equals
方法。
即使 MyClass 不覆盖 hashCode
和 equals
方法,上面的集合也可以只有唯一对象吗?
equals
的默认实现是检查身份(即使用 ==
运算符)。您的 LinkedHashSet
(或任何其他 HashSet
,在这种情况下)将包含独特的对象,您将无法两次添加相同的对象。但是,如果您以完全相同的方式创建两个实例(例如,将相同的参数传递给构造函数),您的集合仍将包含它们,因为它们不是 equals
.