![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java集合底层源码分析
文章平均质量分 90
java集合底层源码分析
爱上口袋的天空
一步一流年,止不住的脚步,挽不回的青春!
展开
-
java集合之HashMap源码分析
一、HashMap简介1.1、HashMap概述HashMap是基于哈希表的Map接口实现的,它存储的是内容是键值对<key,value>映射。此类不保证映射的顺序。1.2、HashMap在JDK1.8以前数据结构和存储原理1)链表散列首先我们要知道什么是链表散列?通过数组和链表结合在一起使用,就叫做链表散列。这其实就是hashmap存储的原理图。2)HashMap的数据结构和存储原理HashMap的数据结...转载 2022-01-26 22:29:32 · 234 阅读 · 0 评论 -
java集合之Vevtor和Stack源码分析
一、Vector概述1)Vector是一个可变化长度的数组2)Vector增加长度通过的是capacity和capacityIncrement这两个变量,目前还不知道如何实现自动扩增的,等会源码分析3)Vector也可以获得iterator和listIterator这两个迭代器,并且他们发生的是fail-fast,而不是fail-safe,注意这里,不要觉得这个vector是线程安全就搞错了,具体分析在下面会说4)Vector是一个线程安全的类,如果使用需要线程安全就使用Vector,如果不需要转载 2022-01-25 22:26:19 · 329 阅读 · 0 评论 -
java集合之LinkedList源码分析
一、LinkedList简介1.1、LinkedList概述LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的。 LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList实现List接口,能对它进行队列操作。 LinkedList实现Deque接口,即能将LinkedList当作双端队列使用。 LinkedList实现了Clo...转载 2022-01-24 22:41:29 · 444 阅读 · 2 评论 -
LinkedList底层源码入门分析以及list集合选择
一、LinkedList底层双向连接简介LinkedList底层实现了双向链表和双端队列特点 可以添加任意元素(元素可以重复),包括null 线程不安全,没有实现同步LinkedList的底层操作机制:LinkedList底层维护了一个双向链表. LinkedList中维护了两个属性first和last分别指向首节点和尾节点 每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表. 所以Li原创 2021-12-30 22:19:23 · 569 阅读 · 0 评论 -
Vector扩容底层源码剖析
一、Vector简介Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。Vector 是同步的,可用于多线程。public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable...原创 2021-12-28 22:52:38 · 195 阅读 · 0 评论 -
ArrayList扩容源码剖析
一、先看ArrayList的简单总结1、ArrayList中维护了一个Object类型的数组elementData. transient Object[] elementData;(Object类型的数组说明什么类型都可以放) 对象在序列化的时候,transient修饰的属性不会被序列化2、当创建对象时,如果使用的是无参构造器,则初始elementData容量为0,其实就是一个空数组3、当添加元素时:先判断是否需要扩容,如果需要扩容,则调用grow方法,否则直接添加元素...原创 2021-12-28 21:30:33 · 820 阅读 · 0 评论