hashcode方法,equals方法,Hashset、HashMap之间的关系?
1.Hashset是采用HashMap来实现的。
2.这个HashMap的key值就是放进Hashset中对象,value就是一个Object类型的对象。
3.当调用Hashset的add方法时,实际上是向HashMap中增加了一行(key-value对),该行的key就是向Hashset中添加的那个对象,该行的value就是一个Object类型的常量。
4.HashMap底层采用数组来维护。
5.当调用HashMap的put方法的时候,会调用增加那个对象的hashcode方法,得到一个hashcode值,然后根据该值来计算出一个数组的下标索引。
6.将准备添加到Map中的对象和该位置上的对象进行equals方法比较。如果相同,那么就将该位置上的那个对象(Entry类型)的value值替换,否则沿着该Entry的链继续重复上述过程,如果到链最后仍然没有找到与此对象相同的对象,那么这个时候就会将该对象增加到数组中,将数组中该位置上的那个Entry对象链到该对象的后面。
7.对于Hashset、HashMap来说,这样做就是为了提高查找效率,使得查找时间不随着Set或者Map的大小而改变。