首页 > 代码库 > java基础之问题:请说出hashCode方法、equals方法、HashSet、HashMap之间的关系

java基础之问题:请说出hashCode方法、equals方法、HashSet、HashMap之间的关系

HashSet是采用HashMap来实现的;这个HashMapkey就是放进HashSet中的对象,value就是一个Object类型的对象

②当调用HashSetadd方法时,实际上是想HashMap中增加了一行(key-value对),该行的key就是往HashSet增加的那个对象,该行的value就是一个Object类型的常量。

HashMap底层采用数组来维护

 

④调用增加的那个对象的hashCode方法,来得到一个hashCode,然后根据该值来计算出一个数组的下标索引(计算出数组中的一个位置)

⑤将准备增加到map中的对象与该位置上的对象进行比较(equals方法),如果相同,那么就将该位置上的那个对象(Entry类型)的value值替换掉,否则沿着该Entry的链继续重复上述过程,如果链到最后仍然没有找到与对象相同的对象,,那么这个时候就会将该对象增加到数组中,将数组中该位置上的那个Entry对象链到该对象的后面。

⑥对于HashSetHashMap来说,这样做就是为了提高查找的效率,使得查找的时间不随着Set或者Map的长度增加而增加。