当前位置: 首页 > 知识库问答 >
问题:

hashCode()、equals()在维护集合中用户定义对象的唯一性时的行为?

堵茂勋
2023-03-14

当在应用程序上工作时,我想为我的值对象(用户定义的VO)丢弃重复的条目,我通过覆盖hashCode()、equals()方法使用了Set数据结构。

我尝试了几次迭代,它工作得很好,但我想了解的是,独特性实际上是如何保持的?是用新对象替换旧对象,还是简单地忽略新对象

因为它们是一样的,我怎么在上面检查呢?

谢谢

共有1个答案

刁瀚昂
2023-03-14

根据javadoc: [Set.add()]将指定的元素添加到这个集合中(如果它还不存在的话)。如果该集合已经包含元素,则调用保持集合不变,并返回false。所以回答你的问题“是旧的对象被新的替换了还是新的被忽略了?”新的被忽略了吗

 类似资料:
  • 问题内容: 决定将这些方法包含在java.lang.Object中的背后原因是什么?平等和哈希对于许多类没有意义。 建立两个接口将更加合乎逻辑: 例如,HashSet定义可能看起来像 这将防止出现一个常见的初学者错误-使用项目集而不实现equals / hashCode。 问题答案: 当我们实现一个接口时,我们注入(或接受)该接口定义的合同。 &是两个不同的合同。但是,如果我们仔细观察,就会发现它

  • 我查看了一些代码,发现其中一个程序扩展了集合的HashSet类。他们创建了自定义的employee对象,并将其插入到Set中,而没有实现Comparable或他们实现了逻辑来识别重复的employee对象,因此如果对象已经存在,他们可以执行更新操作,如果对象不存在,他们可以执行插入操作。我试图理解set如何在没有implementioncomparable或Comparator接口的情况下识别重复

  • 问题内容: 的两个实例是否可能具有相同的值? 从理论上讲,对象是从其内存地址派生的,因此所有对象都应该是唯一的,但是如果对象在GC中移动,该怎么办? 问题答案: 给定合理的对象集合,很可能会有两个具有相同的哈希码。在最好的情况下,它成为生日问题,与数以万计的对象发生冲突。在实践中,使用相对较小的可能的哈希码池创建的对象,仅数千个对象就很容易发生冲突。 使用内存地址只是获得一个稍微随机数的一种方法。

  • 本文向大家介绍两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?相关面试题,主要包含被问及两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?时的应答技巧和注意事项,需要的朋友参考一下 不对,两个对象的 hashCode() 相同,equals() 不一定 true。 代码示例: 执行的结果: str1:1179395 |

  • 如何维护唯一数组的? 例如,如果我有以下数组:

  • 本文向大家介绍java集合——Java中的equals和hashCode方法详解,包括了java集合——Java中的equals和hashCode方法详解的使用技巧和注意事项,需要的朋友参考一下 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法,今天就来介绍一些这两个方法的作用。 equals()