JDK1.8的hashmap底层长这样

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

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

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

JDK1.8的hashmap底层长这样_第1张图片

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

JDK1.8的hashmap底层长这样_第2张图片

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

你可能感兴趣的:(闫同学的Java学习,java,hashmap,数据结构,哈希算法)