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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈晓东 黑马帝   /  2011-10-7 16:40  /  2817 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
答案:
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对像equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能。

我的的问题是 为什么使用iterato()方法来区分?如何区分?(本人感觉是用equals区分的,因为JPI中写的很明白:“set 不包含满足e1.equals(e2) 的元素对 e1 和 e2 ”,由此可见回答使用equals()区分更合适。但是网上众多都是说用iterator()来区分,而且也讲不出个所以然来)。用懂的可以讨论的。



评分

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

查看全部评分

1 个回复

正序浏览
==是用于比较两个对象是否相同
equals是用于比较两个对象的内容是否相同
iterator()方法对Set中的元素进行迭代,在迭代过程中判断其元素是否重复,重复的元素就不会加到该Set中,因为HashSet有一个add方法,看源码add方法返回的正是map的put方法
public boolean add(E e) {
        return map.put(e, PRESENT)==null;
}
然后map.put方法里有判断元素是否存在的方法

评分

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

查看全部评分

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