集合源码阅读
源码阅读系列
SEMINECES
这个作者很懒,什么都没留下…
展开
-
集合源码阅读(三):基于jdk12的LinkedList源码分析
一、前言LinkedList是Java集合框架中一个重要的实现,底层采用双向链表结构。和ArrayList一样,其也支持null值和重复值。它基于双向链表实现,就不用扩容了,可这也就是说,在维护结点的时候需要额外的空间存储前驱和后继的引用。在链表头部和尾部插入效率比较高,但是在指定位置插入就不太行了,原因是定位需要O(N)的时间复杂度,这也就是说查找的效率也不太行。最后,他是非线程安全集合类。这篇文章会写一些LinkedList底层重要的方法。二、源码阅读部分1.声明部分:public class原创 2020-05-16 17:44:16 · 161 阅读 · 0 评论 -
集合源码阅读(二):基于jdk12的ArrayList源码阅读分析
一、前言ArrayList是Java集合框架中List接口的一个实现类,底层用数组实现,相当于动态数组。是一种随机访问模式,实现RandomAccess接口,因此查找十分的块。ArrayList是线程不安全的,Vector是线程安全的,但是Vector比较古老,一般不建议使用。ArrayList特点:基于数组实现的List类。动态的调整容量。有序的(输入输出顺序一致)。元素可以为nu...原创 2020-04-30 13:18:51 · 274 阅读 · 0 评论 -
集合源码阅读(一):基于jdk1.8的HashMap源码阅读分析
一、前言在jdk1.8以前,HashMap采用数组+链表实现,采用拉链法来解决hash冲突,即创建一个链表数组,数组中每一格就是一个链表,遇到hash冲突直接将冲突的值塞进链表里即可,这样同一hash值的都存储在一个链表里。这么做有个缺点就是如果同一hash值元素较多时,查找效率低下。在jdk1.8中为了解决hash冲突频繁的问题,HashMap采用了数组+链表+红黑树实现,当链表的长度超过阈...原创 2020-04-21 16:58:33 · 172 阅读 · 0 评论