Java容器源码详细解析
深入理解Java各容器类的实现原理,重要方法的源码讲解。以及各种常见的面试知识点和解析。
小咸白鱼
这个作者很懒,什么都没留下…
展开
-
LinkedHashSet深入源码
Java容器专栏: Java容器源码详细解析(面试知识点)需要先了解:LinkedHashMap 、HashSet很简单,就直接上源码吧(下面就是全部源码了,很少)//继承了HashSet类,实现了Set、Cloneable、Serializable接口public class LinkedHashSet<E> extends HashSet<...原创 2020-04-07 15:52:28 · 227 阅读 · 0 评论 -
LinkedHashMap深入源码
Java容器专栏: Java容器源码详细解析LinkedHashMap继承HashMap,所以需要先了解HashMap:HashMap(一)LinkedHashMap底层数据结构和HashMap一样都是基于数组+链表(红黑树)实现的,只不过LinkedHashMap还在此基础上增加维护了一条双向链表,即每个entry节点都有before和after指针。这条双向链表记录保存着元素插...原创 2020-04-07 15:27:45 · 145 阅读 · 0 评论 -
HashSet深入源码
Java容器专栏: Java容器源码详细解析(面试知识点)HashSet底层是HashMap,所以需要先了解HashMap:HashMap(一)HashSet底层数据结构HashSet是基于HashMap来实现的,底层用HashMap来保存数据。其依靠HashMap的key不可重复,来保证将来加入到HashSet中的元素也不重复,也保证元素最多只能有一个null值,由于Hash...原创 2020-04-06 17:07:23 · 141 阅读 · 0 评论 -
HashMap深入源码
Java容器专栏: Java容器源码详细解析(面试知识点)(一)HashMap底层数据结构和原理数据结构是哈希桶/哈希表/散列表(即数组+链表),数组每一个位置对应一个桶。在JDK8还引入了红黑树。在某个桶的链表长度大于8且HashMap中元素的个数大于64的时候自动变成一棵红黑树。(如果链表长度大于8,但是HashMap元素个数小于64时,采用扩容来解决)为什么要引入红黑树?...原创 2020-04-06 00:06:52 · 183 阅读 · 0 评论 -
Vector & Stack深入源码
Java容器专栏: Java容器源码详细解析(面试知识点)因为部分内容可能已经在本专栏前面的文章提及到,这里只是简单说明,所以建议先看看:ArrayList LinkedListVectorVector这个类现在已经不常用了,快被遗弃了。(一)Vector底层数据结构和ArrayList一样,底层都是Object动态数组。(向量队列)(二)Vector继承和实...原创 2020-04-03 16:20:24 · 150 阅读 · 0 评论 -
LinkedList深入源码
Java容器专栏: Java容器源码详细解析(面试知识点)因为部分内容可能已经在本专栏前面的文章提及到,这里只是简单说明,所以建议先看看:ArrayList详细说明都在源码里,耐心看会发现其实也挺简单的。(一)LinkedList底层数据结构双向链表,链表中的每个节点都包含了对前一个和后一个元素的引用。链表的最大的容量为Integer.MAX_VALUE。(二...原创 2020-04-02 22:09:51 · 173 阅读 · 0 评论 -
ArrayList深入源码
这里仅作ArrayList的源码解析,不进行与LinkedList的查、插、删等常见的性能对比。也不对List接口的有序可重复允许null值等做过多的说明。既然看源码了,想必这些都懂了,我就不必再赘述了。详细说明都在源码里,耐下心看吧,其实挺简单的。(一)ArrayList底层数据结构可调整大小的动态数组。(二)ArrayList继承关系除了实现List接口外,还实现...原创 2020-03-31 21:15:18 · 195 阅读 · 0 评论