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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© k1453711238 中级黑马   /  2017-8-5 14:11  /  1180 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

3 个回复

倒序浏览
不同的set实现类保证元素唯一性的原理不同:
1:HastSet
    先比较两个对象的hash()值,如果不相等再比较equals()的值
2:TreeSet
    需要对象实现Comparable接口 ,或者创建TreeSet实例时传入Comparator的实例。两个对象大小取决于compare()方法的返回值
回复 使用道具 举报
而楼上说的的第二个,基本不会用,HactSet也用的比较少,但是里面说的hash值,是java对其里面的值经过一定的算法,得出的结果,但是不可否认的是通过这个算法计算出的值,有可能是一样的,那么java对这种算法进行了加强,就是通过equals比对两个值是否相等,通过这两个算法,排除了重复的可能,也确保了值的唯一性
回复 使用道具 举报
Hashcode和equals方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马