①HashSet是采用HashMap来实现的;这个HashMap的key就是放进HashSet中的对象,value就是一个Object类型的对象
②当调用HashSet的add方法时,实际上是想HashMap中增加了一行(key-value对),该行的key就是往HashSet增加的那个对象,该行的value就是一个Object类型的常量。
③HashMap底层采用数组来维护
④调用增加的那个对象的hashCode方法,来得到一个hashCode,然后根据该值来计算出一个数组的下标索引(计算出数组中的一个位置)
⑤将准备增加到map中的对象与该位置上的对象进行比较(equals方法),如果相同,那么就将该位置上的那个对象(Entry类型)的value值替换掉,否则沿着该Entry的链继续重复上述过程,如果链到最后仍然没有找到与对象相同的对象,,那么这个时候就会将该对象增加到数组中,将数组中该位置上的那个Entry对象链到该对象的后面。
⑥对于HashSet、HashMap来说,这样做就是为了提高查找的效率,使得查找的时间不随着Set或者Map的长度增加而增加。
java基础之问题:请说出hashCode方法、equals方法、HashSet、HashMap之间的关系,码迷,mamicode.com
java基础之问题:请说出hashCode方法、equals方法、HashSet、HashMap之间的关系
原文地址:http://blog.csdn.net/sundenskyqq/article/details/24814455