没有重写hashCode()和equals()的对象上的LinkedHashSet

时间:2015-09-05 15:08:39

标签: java generics equals hashcode linkedhashset

我有以下对象集合:

Set<MyClass> test = new LinkedHashSet<MyClass>();

MyClass未覆盖hashcodeequals方法。

即使MyClass没有覆盖hashCodeequals方法,上述集合中只能包含唯一对象吗?

1 个答案:

答案 0 :(得分:6)

equals的默认实现是检查身份(即使用==运算符)。对于那种情况,您的LinkedHashSet(或任何其他HashSet将包含唯一对象,因为您将无法将同一对象添加两次。但是,如果以完全相同的方式创建两个实例(例如,将相同的参数传递给构造函数),则您的集合仍将包含它们,因为它们不是equals