欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HashMap底层实现原理

程序员文章站 2022-06-04 20:05:35
...

HashMap底层实现原理jdk1.7

HashMap map = new HashMap
//实例化后,底层创建了长度为16的一维数组Entry[] table
//之前可能put很多
map.put(“key1”, “value1”);
/**
* 首先,调用key1所在类的hashCode()计算key1的哈希值,此哈希值经过某种计算以后,得到在Entry数组中存放位置
* 如果此位置的数据为空,此时的key1-value1 添加成功-----情况1
* 若果此位置的数据不为空,(以为着此位置存放一个或多个数据(以链表形式存在)),比较key1和已经存在的一个或多个数据的
* 哈希值:
* 如果key1的哈希值与已经存在数据的哈希值不同,此时的key1-value1 添加成功-----情况2
* 如果key1的哈希值与某一条数据的(key2-value2)的哈希值相同,继续比较:调用key1所在类的equals(key2)
* 如果equals()返回的是false:此时key1-value2 添加成功-----情况3
* 如果equals()返回true:使用value1替换value2
*
*/

jdk8相较于jdk7实现原理的不同

     *    1.new HashMap() 底层没有创建一个长度为16的数据
     *    2.jdk8 底层的数据是:Node[] 不是Entry[]
     *    3.首次调用put方法时,底层创建长度为16的数组
     *    4.jdk7底层,只有数组+链表.jdk8中底层数组+链表+红黑树
相关标签: java