【问题标题】:LinkedHashSet on objects without overridden hashCode() and equals()LinkedHashSet 在没有覆盖 hashCode() 和 equals() 的对象上
【发布时间】:2015-09-05 15:08:38
【问题描述】:

我有以下对象集合:

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

MyClass 不会覆盖hashcodeequals 方法。

即使 MyClass 没有覆盖 hashCodeequals 方法,上述集合是否也只能是唯一对象?

【问题讨论】:

标签: java generics equals hashcode linkedhashset


【解决方案1】:

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

【讨论】:

  • 解决办法是什么? 2 个相同的实例被添加到我的linkedHashSet
猜你喜欢
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
相关资源
最近更新 更多