HashMap的底层原理
1.JDK1.7版本中,HashMap采用数组+链表的数据结构,通过哈希算法将元素的键映射到数组的槽位中,如果多个键映射到同一个槽位,那么它们将以链表的形式存储在同一个槽位上。另外。由于链表的查询时间复杂度是O(n),所以冲突很严重,一个索引上的链表很长,查询效率就很低。
2.JDK1.8版本中,HashMap采用数组+链表+红黑树的数据结构,对JDK1.7版本进行了优化,当一个数组的长度超过64,一个链表的长度超过8的时候就会转化为红黑树存储,由于红黑树的查询时间复杂度是O(logn),相较于JDK1.7版本可以提高查询性能,但是当元素的数量小于6的时候,又会转化为链表存储。