概述
HashMap是一个用的比较多的容器,HashMap解决了Hashtable的一些问题,带来了性能的提高,HashMap是线程不安全的。
下文环境基于J11
HashMap 的结构
HashMap 是由 数组+链表+红黑树构成的,当冲突的元素超过8则使用红黑树存储,否则使用链表存储。相比于Hashtable ,HashMap使用了红黑树,当散列冲突较多时性能比Hashtable要高得多。
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