我有以下对象集合:
Set<MyClass> test = new LinkedHashSet<MyClass>();
但MyClass
未覆盖hashcode
和equals
方法。
即使MyClass没有覆盖hashCode
和equals
方法,上述集合中只能包含唯一对象吗?
答案 0 :(得分:6)
equals
的默认实现是检查身份(即使用==
运算符)。对于那种情况,您的LinkedHashSet
(或任何其他HashSet
将包含唯一对象,因为您将无法将同一对象添加两次。但是,如果以完全相同的方式创建两个实例(例如,将相同的参数传递给构造函数),则您的集合仍将包含它们,因为它们不是equals
。