简介
本文介绍JDK7与JDK8的HashMap的区别。
JDK7与JDK8的HashMap区别
项 | JDK7 | JDK8 |
数据结构 | 数组 + 链表。 复杂度:O(n) | 数组 + 链表 + 红黑树 (若链表长度大于8 且容量小于64 会进行扩容;若链表长度大于8 且数组长度大于等于64,会转化为红黑树(提高定位元素的速度);若红黑树节点个数小于6,则将红黑树转为链表。) |
插入位置 | 插入链表头部 | 插入链表尾部 |
hash算法 | 复杂 | 简单。 红黑树效率高,提高查询效率的地方由红黑树实现,没必要像JDK7那么复杂。 |
扩容机制 | 多线程可能导致:数据覆盖、读出为null、死循环 | 多线程可能导致:数据覆盖、读出为null; 不会导致死循环(因为用了尾插) |
请先
!