码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-07-22 23:05:34      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:style   java   问题   c   时间   ar   

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的长度增加而增加。

java基础之问题:请说出hashCode方法、equals方法、HashSet、HashMap之间的关系,码迷,mamicode.com

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

标签:style   java   问题   c   时间   ar   

原文地址:http://blog.csdn.net/sundenskyqq/article/details/24814455

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!