ArrayList的底层操作机制源码分析
底层操作机制
1.ArrayList中维护了一个Object类型的数组elementData
transient Object[] elementData;transient 表示瞬间,短暂的,表示该属性不会被序列化
源码解析
2.当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData为10,如果需再次扩容elementData为1.5倍
3.如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需扩容,则直接扩容elementData为1.5倍
Vector
如果是无参,默认10,满后,就按2倍扩容
如果指定大小,则每次直接按2倍扩容
LinkedList
1.LinkedList底层实现了双向链表和双端队列特点
2.可以添加任意元素(元素可以重复),包括null
3.线程不安全,没有实现同步
底层操作机制
1.LinkedList底层维护了一个双向链表
2.LinkedList中维护了两个属性first和last分别指向首节点和尾节点
3.每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表
4.LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高