ArrayList LinkedList Vector
1.这三个类都实现了List接口(List接口继承了Collection接口),但是也有以下区别
ArrayList和Vector
1>.他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序即连续的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的。
2>.简单的说是ArrayList 和Vector 的底层数据是数组的结构
ArrayList和Vector、LinkList
3>.LinkList即存储在这两个集合中的元素的位置是不连续的,底层数据结构是列表结构
4>.ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,查询速度快,
但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢
5>.LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入,修改,删除 速度较快.
6>.Vector是同步处理,性能较低;ArrayList是使用异步处理,性能高。
7>.Vector是线程安全的,ArrayList是非线程安全。LinkedList是非线程安全
8>.一般情况都用ArrayList,ArrayList占据内存小
2.还有数据方面(但是很少用到)的区别:
1>.ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间(每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡);
2>.Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)
3>.ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法