当前位置: 首页 > 面试题库 >

HashSet如何检查重复

司马飞
2023-03-14
本文向大家介绍HashSet如何检查重复相关面试题,主要包含被问及HashSet如何检查重复时的应答技巧和注意事项,需要的朋友参考一下

当你把对象加入HashSet时,HashSet会先计算对象的hashcode值来判断对象加入的位置,同时也会与其他加入的对象的hashcode值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现。但是如果发现有相同hashcode值的对象,这时会调用equals()方法来检查hashcode相等的对象是否真的相同。如果两者相同,HashSet就不会让加入操作成功。(摘自我的Java启蒙书《Head fist java》第二版)

hashCode()与equals()的相关规定:

  1. 如果两个对象相等,则hashcode一定也是相同的
  2. 两个对象相等,对两个equals方法返回true
  3. 两个对象有相同的hashcode值,它们也不一定是相等的
  4. 综上,equals方法被覆盖过,则hashCode方法也必须被覆盖
  5. hashCode()的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)。

==与equals的区别

  1. ==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同
  2. ==是指对内存地址进行比较 equals()是对字符串的内容进行比较
  3. ==指引用是否相同 equals()指的是值是否相同
 类似资料:
  • 我正在检查< code>HashSet的< code>add方法。有人提到 如果该集合已经包含元素,则调用保持集合不变,并返回false。 但是方法在内部保存中的值 的方法声明 将指定值与该映射中的指定键相关联。如果映射先前包含该键的映射,则旧值将被替换。 那么,如果 的 方法替换了旧值,那么 方法如何在元素重复的情况下保持集合不变?

  • 我需要扩展AbstractTableModel来表示表中的一些数据。我有一个类< code>Car,它应该代表表中的一个项目(行): 这些对象存储在中,它驻留在中: 就我所知,我需要在AbstractTableModel中覆盖至少3个方法。如何为HashSet重写getValueAt?关于HashSet的rowIndex和columnIndex参数是什么?如果我们不能通过一个索引从一个哈希表中获取

  • 好吧,我知道标题真的很模糊,但我无法思考如何说出我的问题,因此我无法谷歌它;这就是我问你们的原因 基本上,我有一个接受文件输入的构造函数,并根据文件名(在我的示例中,我们使用file.txt或employees.txt)对其进行处理。现在,我不知道这是否是一个好主意,或者是否有其他方法可以实现多个重复构造函数。这是我到目前为止的代码,感谢您的帮助!:

  • 问题内容: 我有一个字母数字字符串,我想检查其中是否有整数重复的模式。而且它们应该是连续的。 例 12341234q我们 应该告诉我重复 1234 。 1234qwe1234 应该 不 告诉我, 1234 ,因为它不是连续重复。 12121212 应该被视为重复 12 ,因为这是第一个重复的集合。但是,如果有一种算法可以找到 1212 作为 12 之前的重复集,那么我想它必须在 1212上 再次执

  • 问题内容: 我正在尝试制作一个称为myHash的Point HashSet的浅表副本。截至目前,我有以下内容: 这段代码给了我一个未经检查的强制转换警告。有一个更好的方法吗? 问题答案: 您可以尝试以下方法:

  • 问题内容: 当存储一些文档时,它应该存储不存在的文档并忽略其余文档(应该在应用程序级别完成,也许检查文档的ID是否已经存在,等等?) 问题答案: 这是文档中说明的内容: 操作类型 索引操作还接受可用于强制执行创建操作的op_type,从而允许“如果不存在”行为。使用create时,如果索引中已经存在具有该ID的文档,则索引操作将失败。 这是使用op_type参数的示例: 指定create的另一个选