HashMap结构详解
jdk1.8版本中的HashMap,采用Node数组和链表(或treeNode)的方式实现
HashMap的结构图:

首先有一个Node数组(最左边是node数组)(包含hash,key,value,链表节点),当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,所以说数组存放的是链表。而当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率。