黑马程序员技术交流社区

标题: Set里的元素区分问题 [打印本页]

作者: 唐溪永    时间: 2012-2-23 23:26
标题: Set里的元素区分问题
Set里的元素是不能重复的,区分重复与否,我知道在比较时先调用hashCode方法,如果不相同,证明不相等。
如果相同,再调用equals方法,如果equals方法相同,证明相等,不相同,证明不相等。

但是可不可以用contains来区分是否有重复的对象?
详细的说一下
作者: H07000223    时间: 2012-2-24 00:17
本帖最后由 H07000223 于 2012-2-24 00:21 编辑

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

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

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

你想问的是不是某个元素是否重复添加过。。。
作者: tanlei200620    时间: 2012-2-24 00:48
API文档:如果 set 包含指定的元素,则返回 true。更确切地讲,当且仅当 set 包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时返回 true
是先有元素的equals的实现,才有重复与否的判断。
还有hashCode方法不是每个 Set  都需要的
作者: tanlei200620    时间: 2012-2-24 00:54
先调用hashCode方法 后调用equals  是对基于哈希算法的 set  里的判断方式,因为这样效率要高啊,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2