![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jdk集合源码分析
timi曾
这个作者很懒,什么都没留下…
展开
-
HashMap源码分析
1.HashMap基本原理:HashMap内部维护了一个数组,默认长度16,存储的时候根据key的hashcode计算出下标,存储到对应下标的数组位置,如果hash冲突就挂成链表,链表长度达到8就转成红黑树,默认负载因子是0.75,如果数组的内容占满了0.75就会扩容,每次扩容是之前的两倍2.核心成员变量分析/** * 数组默认初始长度16 */static final...原创 2019-12-16 11:56:28 · 94 阅读 · 0 评论 -
LinkedList源码分析
1.基本原理:LinkedList底层基于双向链表实现的,随机查找慢,需要从头开始一个一个比较,删除、插入快,只需要修改节点的引用就行了,没有扩容的说法2.成员变量分析/** * 元素数量 */transient int size = 0;/** * 第一个元素,封装为一个Node */transient Node<E> first;/** ...原创 2019-12-12 13:43:58 · 96 阅读 · 0 评论 -
ArrayList源码分析
1.ArrayList基本原理:ArrayList底层基于数组实现,所有插入是有顺序的,数组是一块两块空间,引用它的首地址,长度是固定的,添加元素数组长度满了的时候就会扩容,创建一个新的数组把元素都复制过去,如果在中间插入或删除会导致数组元素一个一个移动,数组有下标随机查找快。能预估数据长度的条件下,尽量指定长度,避免长度小频繁扩容,适用场景遍历多,随机查找多,没有频繁插入、随机插入少、随机删...原创 2019-12-11 15:14:01 · 77 阅读 · 0 评论