HashSet如何检查重复?
当你把对象加入到HashSet时,HashSet会先计算对象的hashcode值来判断对象加入的位置,同时也会与其他加入的对象的hashcode值作比较,如果没有相符的hashcode值,HashSet会假设对象没有重复出现,但是如果发现有相同hashcode值的对象,这时会调用equals()方法来来检查hashcode相等的对象是否真的相同,如果两者相同,HashSet就不会加入操作成功。
hashcode()与equals()的相关规定:
1、如果两个对象相等,则hashcode一定相等
2、两个对象相等,对两个对象equals()结果返回true
3、两个对象有相同的hashcode值,他们也不一定是相等的
4、综上,equals方法被覆盖过,则hashcode方法也必须被覆盖
5、hashcode()的默认行为是对堆上的对象产生独特值,如果没有重写hashcode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
==与equals的区别
1、==是判断两个变量或实例是不是指向同一个内存空间,equals判断两个变量或者实例所指向的内存空间的值是不是相同
2、==是对内存地址进行比较,equals()是对字符串的内容进行比较
3、==指向引用是否相同,equals()指的是值是否相同
HashSet如何检查重复
最新推荐文章于 2025-02-13 10:29:49 发布
本文详细介绍了HashSet如何通过hashcode和equals方法检查并避免重复元素。当对象加入HashSet时,首先根据hashcode定位,相同hashcode的对象会进行equals比较,确保对象真正相等时才不添加。此外,讨论了equals和hashcode的约定以及它们与==的区别。了解这些对于优化集合操作和避免冲突至关重要。

1019

被折叠的 条评论
为什么被折叠?



