jdk1.7 : 数组+链表
jdk1.8:数据+链表+红黑树
当put(key,value)时,根据key值的hash算法计算出此元素应该放置于哪个位置;如果有两个元素的key的hash值一致,则这两个元素被放置在同一个数组的位置,在该位置上,这两个元素是以链表的结构储存的;
链表的结构的特点,增删快,查询慢;如果相同的hash值过多,则会造成,该值下的链表过长,效率低下;
jdk1.8使用了红黑树的结构,如果该节点的链表长度大于8时,则用红黑树储存元素;小于等于8时,使用链表;则有效的解决了当链表过长查询慢的问题