所有分类
  • 所有分类
  • 未分类

Java-JDK7与JDK8的HashMap的区别

简介

本文介绍JDK7与JDK8的HashMap的区别。

JDK7与JDK8的HashMap区别

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

19

评论2

请先

  1. 链表长度这里是大于等于8,还是大于8,是否包括8。
    JNInRain 2024-10-19 0
    • 大于8(不包括8)。源码是这样的:binCount >= TREEIFY_THRESHOLD - 1,此时会转为红黑树。TREEIFY_THRESHOLD等于8,所以是:大于等于7,也就是:大于8
      自学精灵 2024-10-23 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录