java学习笔记
相同:三个类都实现了List接口,存储数据的特点相同,存储有序的,可重复的数据
不同:
ArrayList:作为List接口的主要实现类;线程不安全,效率高,底层使用Object[] elementData存储
LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储
Vector:作为List接口的古老实现类线程安全的,效率低;底层使用Object[] elementData存储
ArrayList源码分析
jdk1.7和jdk1.8稍有不同
下面截取一部分jdk1.8的源码:
创建一个空参数的集合:它一开始并没有直接new对象
执行add方法
如果是第一次执行add方法,则会创建对象
LinkedList源码分析:
它的底层是双向链表
每个节点的定义
Vector源码分析:
它与ArrayList很相似但它是线程安全的,ArrayList是线程不安全的;而且它是两倍扩容的,ArrayList是1.5倍。