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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李龙龙 黑马帝   /  2011-11-24 23:30  /  2555 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

3 个回复

正序浏览
先调用hashCode  来获取对象保存的地址,   如果此地址已保存元素, 则调用equals方法 比较两个对象是否相等,假如相等,则不增加元素,不想等,则将元素保存到set集合中,  假如调用hashCode 获取保存地址后此地址没有元素 , 则直接将元素保存到集合中

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
先根据元素的hashcode()方法来计算一个值,根据这个值来找这个元素在内存中就应该存在的位置区间。然后调用equals方法来判断这个区间有无这个元素。
如果没有这个元素,就可以把这个元素放进去,有就不能放进去了。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
是用equals()判断的 ,里面好像从写hashcode方法,然后进行判断的
equals()是判断两个值是否相等
==是判断两个对象是不是同一个对象

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马