概要
在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的键值对会被放在同一个位桶里,
当桶中元素较多时,通过key值查找的效率较低。
在极端情况下可能会存在某个链表很长,整个时候整个查找效率就变低了,于是有了1.8的改进方式。使用红黑树,提升查询效率。
而JDK1.8中,HashMap采用位桶+链表+红黑树实现,如果哈希表单向链表中元素超过8个,那么单向链表这种数据结构会变成红黑树数据结构。
当红黑树上的节点数量小于6个,会重新把红黑树变成单向链表数据结构。
数组
存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。