Vector底层结构和源码剖析
基本介绍:
- Vector底层是一个对象数组, protected Object[] elementData;
- Vector是线程同步的,即线程安全,Vector带有synchronized
- 在开发中,需要线程同步安全时,考虑使用Vector
Vector和ArrayList的底层结构比较
LinkedList底层结构和源码剖析
LinkedList的全面说明
- LinkedList底层实现了双向链表和双端队列特点
- 可以添加任意元素(元素可以恢复,)包括null
- 线程不安全,没有实现同步
LinkedList的底层操作机制
- LinkedList底层维护了一个双向链表
- LinkedList中维护了两个属性first和last分别指向首节点和尾节点
- 每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双链表。
- 所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高
ArrayList和LinkedList的比较
如何选择ArrayList和LinkedList:
- 如果我们改查的操作较多,选择ArrayList
- 如果增删的操作较多,选择LinkedList
- 一般来说,在程序中,80%-90%都是查询,因此大部分情况下会选择ArrayList
- 在一个项目中,根据业务灵活选择,也可能这样,一个模块使用的是ArrayList,另一个模块是LinkedList,也就是说,要根据业务来进行选择