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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐溪永 黑马帝   /  2012-2-23 23:26  /  2088 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Set里的元素是不能重复的,区分重复与否,我知道在比较时先调用hashCode方法,如果不相同,证明不相等。
如果相同,再调用equals方法,如果equals方法相同,证明相等,不相同,证明不相等。

但是可不可以用contains来区分是否有重复的对象?
详细的说一下

3 个回复

倒序浏览
本帖最后由 H07000223 于 2012-2-24 00:21 编辑

contains(Object o)
          Returns true if this set contains the specified element.=>如果set中包含了指定的元素则返回true

你能通过Set接口的实现类调用contains方法,就表示这个集合可以用了,也就意味着不存在重复元素了。

他只能判断存不存在的问题。

你想问的是不是某个元素是否重复添加过。。。
回复 使用道具 举报
API文档:如果 set 包含指定的元素,则返回 true。更确切地讲,当且仅当 set 包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时返回 true
是先有元素的equals的实现,才有重复与否的判断。
还有hashCode方法不是每个 Set  都需要的
回复 使用道具 举报
先调用hashCode方法 后调用equals  是对基于哈希算法的 set  里的判断方式,因为这样效率要高啊,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马