Hashmap是有数组+链表+红黑树组成的数据结构。HashMap采用Entry数组来存储key-value对,每一个键值对组成了一个Entry实体,Entry类实际上是一个单向的链表结构,它具有Next指针,可以连接下一个Entry实体。 只是在JDK1.8中,链表长度大于8的时候,链表会转成红黑树。数组是用来确定桶的位置,利用元素的key的hash值对数组长度取模得到. 链表是用来解决hash冲突问题,当出现hash值一样的情形,就在数组上的对应位置形成一条链表。在hashmap插入数据的时候通过计算key的hash值,如果hash值没有碰撞就直接放到数组对应的链表中。如果hash值碰撞了,就以链表形式存放。如果碰撞导致链表过长,就会把链表转换成红黑树。从hashmap获取数据,根据key计算出hash值,如果链表中第一个节点就命中直接返回。如果有冲突,通过key.equals去查找对应的元素。Hashmap默认长度16,在插入数据的时候,通过load factor因子判断是否需要扩容,默认0.75。
什么是HashMap
- 01 vue3常见问题及解决方案…2022-05-26
- 02 关于Redis的问题探讨(二…2022-05-26
- 03 『忘了再学』Shell基础…2022-05-26
- 04 JetBrains IDE全新UI预…2022-05-26
- 05 v87.01 鸿蒙内核源码分…2022-05-26
- 06 spring-boot @Async注解…2022-05-26
- 07 前端性能优化手段2022-05-26
- 08 案例成果展 | 灵雀云助…2022-05-26
- 09 数据指标体系如何搭建才…2022-05-26
- 010 TKE qGPU 通过 CRD 管理…2022-05-26
- 01vue3常见问题及解决方案…2022-05-26
- 02关于Redis的问题探讨(二…2022-05-26
- 03『忘了再学』Shell基础…2022-05-26
- 04JetBrains IDE全新UI预…2022-05-26
- 05v87.01 鸿蒙内核源码分…2022-05-26
- 06spring-boot @Async注解…2022-05-26
- 07前端性能优化手段2022-05-26
- 08案例成果展 | 灵雀云助…2022-05-26
- 09数据指标体系如何搭建才…2022-05-26
- 010TKE qGPU 通过 CRD 管理…2022-05-26