Java集合(3):小白也能看懂的HashMap图解、底层原理与Hash算法 您所在的位置:网站首页 链表集合 Java集合(3):小白也能看懂的HashMap图解、底层原理与Hash算法

Java集合(3):小白也能看懂的HashMap图解、底层原理与Hash算法

2024-07-01 21:51| 来源: 网络整理| 查看: 265

前面分析了Java集合中ArrayList和LinkedList的源码,这次说一下另一个常用的集合:HashMap。

一 、HashMap的特点

(1)属于Map下的集合,用KV键值对存储元素,元素是无序的,key不允许重复,value允许重复,允许存储null。 (2)底层数据结构是哈希表,实现是链表+数组,JDK 8 后又加了红黑树。 (3)多线程环境下不安全,解决方法:

使用Hashtable;调用Collections类的synchronizedMap方法;使用juc包下的ConcurrentHashMap类代替(此方法效率最高)。 二、初识底层结构

特点中提到,HashMap底层结构为数组+链表+红黑树,先看一下大体的结构图: 在这里插入图片描述 简单的说,当一个数据要添加到HashMap中时,首先根据key找到数组的位置,如果数组已经有数据了则与前面的数据形成链表,如果链表过长则形成红黑树。 那么这个数组到底多大?链表多长时会形成红黑树?这一系列问题,我们可以在HashMap的属性中找到答案。

三、属性

HashMap中定义了六个常量,用来控制它的底层结构。 (1)static final int DEFAULT_INITIAL_CAPACITY = 1



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有