Java8 HashMap与ConcurrentHashMap的深入剖析是怎样的?

2026-05-23 20:320阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计7417个文字,预计阅读时间需要30分钟。

Java8 HashMap与ConcurrentHashMap的深入剖析是怎样的?

原文出处:JavaDoop+Java7中的+HashMap+和+ConcurrentHashMap+全解析+Java8+HashMap+Java8+对+HashMap+进行了+一些+修改,最大的不同就是利用了+红黑树+,因此其组成结构为+数组+、+链表+、+红黑树+。

原文出处: JavaDoop

Java7 中的 HashMap 和 ConcurrentHashMap 全解析

Java8 HashMap

Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。

 

根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 **O(n)**。

 

为了降低这部分的开销,在 Java8 中,当链表中的元素达到了 8 个时,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 **O(logN)**。

 

来一张图简单示意一下吧:

注意,上图是示意图,主要是描述结构,不会达到这个状态的,因为这么多数据的时候早就扩容了。

下面,我们还是用代码来介绍吧,个人感觉,Java8 的源码可读性要差一些,不过精简一些。

阅读全文

本文共计7417个文字,预计阅读时间需要30分钟。

Java8 HashMap与ConcurrentHashMap的深入剖析是怎样的?

原文出处:JavaDoop+Java7中的+HashMap+和+ConcurrentHashMap+全解析+Java8+HashMap+Java8+对+HashMap+进行了+一些+修改,最大的不同就是利用了+红黑树+,因此其组成结构为+数组+、+链表+、+红黑树+。

原文出处: JavaDoop

Java7 中的 HashMap 和 ConcurrentHashMap 全解析

Java8 HashMap

Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。

 

根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 **O(n)**。

 

为了降低这部分的开销,在 Java8 中,当链表中的元素达到了 8 个时,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 **O(logN)**。

 

来一张图简单示意一下吧:

注意,上图是示意图,主要是描述结构,不会达到这个状态的,因为这么多数据的时候早就扩容了。

下面,我们还是用代码来介绍吧,个人感觉,Java8 的源码可读性要差一些,不过精简一些。

阅读全文