Java集合
文章平均质量分 92
Java集合
贤子磊
love and code
展开
-
JDK源码解析之LinkedHashMap
一、简介LinkedHashMap 继承自 HashMap,除了拥有HashMap的特性外,还提供了保持遍历顺序和插入顺序一致的功能。LinkedHashMap维护了一条双向链表,从而保证了遍历与插入顺序的一致性。LinkedHashMap可以理解为LinkedList + HashMap的组合LinkedHashMap的绝大多数功能(查找、插入、删除等)直接来源于HashMap,因此本文主要研究双向链表的维护。如果对HashMap不了解,可以查看之前的文章:JDK源码解析之HashMap以原创 2022-03-05 09:48:00 · 472 阅读 · 0 评论 -
JDK源码解析之LinkedList
一、概述LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的,是线程不安全的,允许元素为null的双向链表。LinkedList本质就是双向链表,每个节点都有指向前驱和指向后继的指针,从而构成链表。相对于之前讲的ArrayList,LinkedList 使用较少,它的源码也相对简单许多。二、类图可以看到LinkedList实现了四个接口java.util.List:提供数组的添加、删除、修改、迭代遍历等操作java.util.Deque原创 2022-03-05 09:47:29 · 240 阅读 · 0 评论 -
JDK源码解析之HashSet
一、简介HashSet是基于HashMap实现的Java集合,它可以保证存储的元素不重复HashSet的底层就是通过HashMap的key来保存元素,从而保证存储的元素不重复。如果对HashMap熟悉的话,HashSet基本也就掌握了,它的底层源码相对简单多了。如果对HashMap不熟悉,可以参考我之前的文章:JDK源码解析之HashMap基于JDK1.8版本二、类图实现了三个接口实现 java.util.Set接口实现 java.io.Serializable 接口。实现 j原创 2022-03-05 09:46:56 · 215 阅读 · 0 评论 -
JDK源码解析之HashMap
一、简介是一种散列表,用于存储 key-value 键值对的数据结构HashMap最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap允许 null 键和 null 值,在计算键的哈希值时,null 键哈希值为 0。HashMap并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。下面的讲解以1.8版本为准,适当的时候会与1.8之前的版本作比较二、底层原理1. JDK1.8版本之前底层采用数组+链表的数据结构来实现,如下图所示添加元素时,获取原创 2022-03-05 09:46:16 · 325 阅读 · 0 评论 -
JDK源码解析之ArrayList
一、简介ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处它的底层就是数组队列,相对于Java中的数组来说,它的容量可以动态增长,因此被称为动态数组。正因为自动扩容机制,ArrayList已经成为平时最常用的集合类(以下的讲解基于jdk1.8版本)。二、类图ArrayList的类图如下所示可以看到ArrayList实现了四个接口java.util.List:提原创 2022-03-05 09:45:25 · 248 阅读 · 0 评论