A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

8黑马币
关于集合中去元素重复性的底层原理?

最佳答案

查看完整内容

先通过判断元素的哈希值,元素的哈希值hashCode()一致了,这时会再次判断元素的内容是相同(equals()) 如果equals返回true,意味着元素相同,不存! 如果equals返回false,意味着两个元素不相同,存储,继续通过算法算出位置。拉链法! 所以存储在set接口容器中存储元素时,该元素必须要有哈希算法和equals方法。而且需要重写Object类中的方法。元素在add时,必须先执行元素的哈希算法,如果哈希值不一样,在使用元素的equals方法 ...

2 个回复

倒序浏览
先通过判断元素的哈希值,元素的哈希值hashCode()一致了,这时会再次判断元素的内容是相同(equals())
如果equals返回true,意味着元素相同,不存!
如果equals返回false,意味着两个元素不相同,存储,继续通过算法算出位置。拉链法!
所以存储在set接口容器中存储元素时,该元素必须要有哈希算法和equals方法。而且需要重写Object类中的方法。元素在add时,必须先执行元素的哈希算法,如果哈希值不一样,在使用元素的equals方法判断内容。
回复 使用道具 举报
主要这两个方法重写一些就好了hashCode()和equals()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马