摘要:TreeMap 是 Map 集合的有序实现,其底层是基于红黑树的实现,能够早 log(n) 时间内完成 get、put 和 remove 操作。 TreeMap 继承自 AbstractMap,还实现了 NavigableMap接口。NavigableMap 接口继承了SortedMap接口,Sor 阅读全文
posted @ 2019-08-28 21:15 陈树义 阅读 (134) 评论 (0) 编辑
摘要:WeakedHashMap 也是 Map 集合的哈希实现,但其余 HashMap 的不同之处在于。其每个节点的 value 引用是弱引用,可以方便 GC 回收。 从 WeakHashMap 的定义来看,WeakHashMap 并没有继承 HashMap,这就意味着 WeakHashMap 必须自己重 阅读全文
posted @ 2019-08-28 21:14 陈树义 阅读 (98) 评论 (0) 编辑
摘要:HashMap 是 Map 基于哈希散列算法的实现,其在 JDK1.7 中采用了数组+链表的数据结构。在 JDK1.8 中为了提高查询效率,采用了数组+链表+红黑树的数据结构。本文所有讲解均基于 JDK1.8 进行讲解。 从上面 HashMap 的定义可以看出,其继承了 AbstractMap,实现 阅读全文
posted @ 2019-08-28 21:13 陈树义 阅读 (202) 评论 (1) 编辑
摘要:我们之前说过 LinkedHashMap 是在 HashMap 的基础上,增加了对插入元素的链表维护。那么其到底是怎么实现的呢?今天这篇文章就带我们来一探究竟。 LinkedHashMap 的声明比较简单,继承了 HashMap 类,实现了 Map 接口。 原理 我们将从类成员变量、构造方法、核心方 阅读全文
posted @ 2019-08-28 21:13 陈树义 阅读 (79) 评论 (0) 编辑
摘要:我们之前在说到 List 集合的时候已经说过 LinkedList 了。但 LinkedList 不仅仅是一个 List 集合实现,其还是一个双向队列实现。 LinkedList 不仅实现了 List 接口,还实现了 Deque 接口。所以这一节我们来聊聊 LinkedList 的双向队列特性。 原 阅读全文
posted @ 2019-08-28 21:12 陈树义 阅读 (61) 评论 (0) 编辑
摘要:从名字我们可以看出,其实一个双向队列实现,而且底层采用数组实现。 从定义可以看出,其实现了 Deque 接口。 原理 为了深入理解 ArrayDeque 的原理,我们将从类成员变量、构造方法、核心方法两个方面逐一介绍。 类成员变量 从类成员变量我们就可以知道,其底层确实使用数组存储。 构造方法 Ar 阅读全文
posted @ 2019-08-28 21:12 陈树义 阅读 (56) 评论 (0) 编辑
摘要:PriorityQueue 是一个优先级队列,其底层原理采用二叉堆实现。我们先来看看它的类声明: PriorityQueue 继承了 AbstractQueue 抽象类,具有队列的基本特性。 二叉堆 由于 PriorityQueue 底层采用二叉堆来实现,所以我们有必要先介绍下二叉堆。 二叉堆从结构 阅读全文
posted @ 2019-08-28 21:11 陈树义 阅读 (68) 评论 (0) 编辑
摘要:TreeSet 是 Set 集合的红黑树实现,但其内部并没有具体的逻辑,而是直接使用 TreeMap 对象实现。我们先来看看 TreeSet 的定义。 可以看到 TreeSet 实现了 NavigableSet 接口,而 NavigableSet 接口又继承了 接口。SortedSet 接口又继承了 阅读全文
posted @ 2019-08-28 21:10 陈树义 阅读 (67) 评论 (0) 编辑
摘要:LinkedHashSet 继承了 HashSet,在此基础上维护了元素的插入顺序。 原理 LinkedHashSet 的源码非常简单,只有简单的四4个构造方法。 但我们不是说 HashSet 还维护了元素的插入顺序么?那这部分代码写在哪里呢? 这里我们要注意一个细节,即 LinkedHashSet 阅读全文
posted @ 2019-08-28 21:09 陈树义 阅读 (67) 评论 (0) 编辑
摘要:HashSet 是 Set 集合的哈希实现,其继承了 AbstractSet 抽象类,并实现了 Set 接口。 原理 为了深入理解 HashSet 的原理,我们将从类成员变量、构造方法、核心方法两个方面逐一介绍。 类成员变量 从类成员变量我们可以知道,HashSet 内部使用 HashMap 存储, 阅读全文
posted @ 2019-08-28 21:08 陈树义 阅读 (85) 评论 (0) 编辑