黑马程序员技术交流社区
标题: Set问题 [打印本页]
作者: 陈建华 时间: 2012-12-6 15:21
标题: Set问题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
作者: 黑马王宁 时间: 2012-12-6 15:48
当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到
一个位置用来存放当前对象。
如果在该位置没有一个对象存在的话,那么集合Set认为该对象在集合中不存在,直接
增加进去。
如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象
进行equals方法比较。
如果该equals方法返回false,那么集合认为集合中不存在该对象,再进行一次散列,
将该对象放到散列后计算出来的地址中。
如果equals方法返回true,那么集合认为集合中已经存在该对象了,不再将该对象增加到集合中。
equal:是用来比较两个对象内部的内容是否相等的,由于所有的类都是继承自java.lang.Object类的,所以
如果没有对该方法进行 覆盖的话,调用 的仍然是Object类中的方法,而Object中的equal方法返回的却是==的判
断,因此,如果在没有进行该方法的 覆盖后,调用该方法是没有任何意义的。
==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的
是真正意义上的指针操作。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |