三者相同点:ArrayList,LinkedList,Vector都实现了List接口,因此均具有:有序、可重复、可通过索引访问集合中的元素。
ArrayList和Vector
相同点:
1.实现list接口,有序,可重复,可索引遍历;
2.底层都是一个object数组,通过维护这个数组结构来改变ArrayList或Vector的结构。
不同点:
1.ArrayList是线程不同步的(不安全),操作效率高;Vector是线程同步的(安全),操作效率低;
2.ArrayList是jdk1.2出现的,Vector是jdk1.0出现的。(HashTable也是jdk1.0,在不考虑线程安全情况下,推荐以ArrayList来代替Vector、HashMap来代替HashTable;如果遇到需要并发环境,也可以通过
List list = Collections.synchronizedList(new ArrayList(…));
将不安全的集合转化为安全的集合。)
ArrayList和LinkedList
相同点:
1.实现list接口,有序,可重复,可索引遍历;
2.ArrayList和LinkedList都不是线程安全的(Vector是线程安全的)
不同点:
1.ArrayList底层是一个数组结构,LinkedList底层是一个双向链表结构;
2.ArrayList查询速度快,增删速度慢;LinkedList增删速度快,查询速度慢;
3.ArrayList初始容量大小为10,默认增长为原来的1.5倍;LinkedList没有初始化大小,也没有扩容的机制,就是一直在前面或者后面新增就好。(Vector初始容量也为10,默认增长为原来的2倍);
4.对于ArrayList无论采取哪一种遍历方式其速度都差不多,但是对于LinkedList最好不用for循环遍历,推荐Iterator(迭代器)遍历。