Java集合类--HashMap
一、HashMap基本源码实现 1、HashMap基本结构 HashMap继承AbstractMap抽象类,AbstractMap实现Map接口。 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVersionUID = 362498820763181265L; .... } public abstract class AbstractMap<K,V> implements Map<K,V> { protected AbstractMap() { } ... } 二、HashMap的基本数据结构 jdk1.8之前,HashMap是由“数组+链表”的结构组成,jdk1.8之后,HashMap得到很大的改善;数据结构也发生了改变:“数组+链表+红黑树”;当链表节点大于8时,会转换为红黑树;否则仍然以链表结构。 头节点指的是table表上索引位置的节点,也就是链表的头节点 根节点(root节点)指的是红黑树最上面的那个节点,也就是没有父节点的节点 红黑树的根节点不一定是索引位置的头节点 转为红黑树节点后,链表的结构还存在,通过next属性维持