HashSet如何检查重复

HashSet如何检查重复,第1张

HashSet如何检查重复

当你把对象加入

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

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

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

==与equals的区别

  1. ==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同
  2. ==是指对内存地址进行比较 equals()是对字符串的内容进行比较
  3. ==指引用是否相同 equals()指的是值是否相同

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4876613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存