Java集合
文章平均质量分 87
_断续
一个不安分的大学僧
展开
-
Java集合(4):HashMap的put源码分析及扩容机制详解
根据上一篇文章 Java集合(3):小白也能看懂的HashMap图解、底层原理与Hash算法 ,明白了HashMap的底层原理,以及当一个元素添加进来时,HashMap什么时候会扩容,什么时候链表会变为红黑树。接下来将从源码分析PUT方法的流程。put源码解析与流程分析代码的解释在注释里: //首先调用了putVal方法 public V put(K key, V value) { return putVal(hash(key), key, value, false, tr原创 2021-02-14 18:52:22 · 318 阅读 · 2 评论 -
Java集合(3):小白也能看懂的HashMap图解、底层原理与Hash算法
前面分析了Java集合中ArrayList和LinkedList的源码,这次说一下另一个常用的集合:HashMap。一 、HashMap的特点(1)属于Map下的集合,用KV键值对存储元素,元素是无序的,key不允许重复,value允许重复,允许存储null。(2)底层数据结构是哈希表,实现是链表+数组,JDK 8 后又加了红黑树。(3)多线程环境下不安全,解决方法:使用Hashtable;调用Collections类的synchronizedMap方法;使用juc包下的Concurrent原创 2021-02-13 20:20:13 · 3330 阅读 · 1 评论 -
Java集合(2):LinkedList概述与源码解析
一、LinkedList的概述与特点LinkedList与ArrayList一样都实现了List接口,但是在底层上却截然不同。也许在平时中它的使用频率不及ArrayList,但是相较于ArrayList,LinkedList也具有独有的特点,因此知道它的实现方式以及在特定场合中使用它是很有必要的。LinkedList的特点如下:(1)底层为一个双向链表,存储空间不连续,增删快,查找慢。(2)属于List,有序存储,存储元素可重复,允许null元素存储。(3)不支持同步,线程不安全。二、继承体系原创 2021-02-07 16:33:59 · 273 阅读 · 3 评论 -
Java集合(1):ArrayList深度解析
一、ArrayList 的概述与特点ArrayList就是动态数组,是数组Array的复杂版本,它具有以下特点:(1)是一个动态数组,支持动态扩容(2)有序存储,存储的元素可重复,并支持null元素的存储(3)底层为数组,查找快,增删慢(4)不支持同步,线程不安全二、ArrayList 的继承体系查看源码,发现ArrayList继承AbstractList抽象父类,实现了List、RandomAccess、Cloneable、Serializable接口。其中:(1)List接口:定义了L原创 2021-02-05 11:27:19 · 1406 阅读 · 3 评论