JDK1.8的hashmap底层长这样

HashMap底层:数组+链表(+红黑树), 是一个采用hash表(散列表)实现键值对集合,继承 AbstractMap,实现了Map接口。HashMap 先通过哈希运算,得到目标元素在哈希表中的值,然后再进行少量比较即可得到元素,这使得HashMap的查找效率更高。

哈希冲突:当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。

哈希冲突解决方法:由于hash表即散列表的存在,往往会出现哈希冲突,也就是散列冲突,解决散列冲突的方法有很多种:开放定址法(发生冲突,继续寻找下一块未被占用的存储地址),再散列函数法,链地址法。
hashmap底层结构:

在这里插入图片描述

JDK1.8之前数组+链表式hashmap

在这里插入图片描述

JDK1.8之后数组+链表+红黑树式hashmap

版权声明:本文为weixin_44526508原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。