黑马程序员技术交流社区

标题: HashSet之hashCode()疑惑? [打印本页]

作者: 罗玉宁    时间: 2013-3-13 17:16
标题: HashSet之hashCode()疑惑?
本帖最后由 罗玉宁 于 2013-3-14 14:15 编辑

HashSet会调用该对象的hashcode方法来得到该对象的hashcode值,然后根据该hashcode值来决定该对象在HashSet中存储位置。如果有两个元素通过equals方法比较返回true,但他们的hashcode值不想等,HashSet将会把他们存储在不同的位置。如果有多个元素的hashcode相同,但是他们通过equal方法返回false。这时添加也成功,那么取值的时候是否是根据hashcode查找呢?如果是,那么取出来的是谁呢?
作者: 杨剑    时间: 2013-3-13 17:29
取值的时候不会根据hashcode来查找的,因为,每次存储数据的时候是根据hashcode和equals方法来判断所存储的位置,这样,存储数据的时候位置早已经确定了,取数据的时候就直接到hash表里面从头到尾遍历来取出数据,存什么数据取什么数据。




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