java - 没有覆盖 hashCode() 和 equals() 的对象上的 LinkedHashSet

标签 java generics equals hashcode linkedhashset

我有以下对象集合:

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

但是 MyClass 不会覆盖 hashcodeequals 方法。

即使 MyClass 不覆盖 hashCodeequals 方法,上面的集合也可以只有唯一对象吗?

最佳答案

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

关于java - 没有覆盖 hashCode() 和 equals() 的对象上的 LinkedHashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414569/

相关文章:

java - JAVA 的 equals 方法总是返回 true

java - 为什么我包含的 JSP 文件不能得到正确处理?

java - 为什么下面的代码会出错

java - 为什么使用 "\u000d"执行注释可以工作,但使用 "\n"则不行

delphi - 方法的默认通用比较器返回不正确的结果

java - 使用静态比较器对 BSTree 进行排序

Scala 相当于在 Java 中组合泛型类型?

Java HashMap 返回值不符合我对 equals 和 hashcode 的理解

javascript - 为什么 JavaScript 中 1 == '1\n' 为 true?

java - 有没有办法将巨大的 Java 变量保留在内存中以节省加载时间?