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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zc332750 于 2014-2-7 13:10 编辑

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

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 新年快乐!同学~

查看全部评分

2 个回复

倒序浏览
用set里存的元素的类中hashCode() 和 equals()来区分。
如果哈希值不同,那么两个元素不同。
如果哈希值相同,则判断equals()方法是否相同;
equals()为true 两元素相同
equals()为flase 两元素不同

==判读内存地址值是否相同
equals要复写Object的equals方法

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 新年快乐!同学~

查看全部评分

回复 使用道具 举报
Set集合又分两个常见的HashSet和TreeSet集合。
HashSet集合底层是哈希表。它保证元素唯一性是根据元素本身的hashCode值,当hashCode值一样时,它还会判断调用元素本身的equals方法在进行一次比较。
TreeSet底层是二叉树数据结构。想存入TreeSet集合的元素必须具备比较性或集合本身具备比较性,所以保证其元素唯一性是根据compareTo或compare方法的返回值来决定的。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 新年快乐!同学~

查看全部评分

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