分析 java.util.HashMap 源码

Java65

概述

HashMap是一个用的比较多的容器,HashMap解决了Hashtable的一些问题,带来了性能的提高,HashMap是线程不安全的。
下文环境基于J11

HashMap 的结构

HashMap 是由 数组+链表+红黑树构成的,当冲突的元素超过8则使用红黑树存储,否则使用链表存储。相比于Hashtable ,HashMap使用了红黑树,当散列冲突较多时性能比Hashtable要高得多。
分析 java.util.HashMap 源码

HashMap中有两种类型的节点 ; Node<k,v></k,v>TreeNode<k,v></k,v>
Node<k,v></k,v> 用于链表和数组, TreeNode<k,v></k,v> 用于红黑树
HashMap整个是用一个 Node<k,v></k,v> 数组,称谓哈希桶存储:

transient Node[] table;

Node<k,v></k,v> 的结构如下所示,它实现了 Map.Entry<k,v></k,v> 这个接口,是 Map 的集合形式,方便来遍历。定义的一些字段也都表明是方便来访问的

```java

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长