参考如下:
https://blog.csdn.net/eson_15/article/details/51145788
结论是:
通常情况下,ArrayList和LinkedList的区别有以下几点:
1.arraylist是基于动态数据,而linkedList是基于链表实现的
2.Arraylist的get set 效率优于 LInkedlist ,因为linkedlist 要移动指针
3.对于添加和删除操作add和remove,效率高低要具体情况按,一般 在数据量大的时候,Arraylist add remove效率明显高 ;
ArrayList想要在指定位置插入或删除元素时,主要耗时的是System.arraycopy动作,会移动index后面所有的元素;LinkedList主耗时的是要先通过for循环找到index,然后直接插入或删除。这就导致了两者并非一定谁快谁慢
最后
Vector
https://www.geeksforgeeks.org/vector-vs-arraylist-java/
在geeksforgeeks的一句话:
Vector and Arraylist both implement the List interface ,both use dynamic -resizable arrays for its internal data structure
Vector 和 Arraylist的不同:
1.同步性:Vector 是同步的.Arraylist是不同步的。同步意味着只有一次只能有一个线程访问,当一个线程在访问Vector时,it aquire a lock on it ,其余线程处于等待状态,当执行完成lock释放后,等待线程才可以访问
Arraylist不是同步的,需要同步代码块

2.性能: Arraylist 更快 因为是不同步的,Vector是同步的一次允许一个线程访问,只有锁释放后,其余线程才可以访问
3.扩容方式: 都是动态增长(缩小),Arraylist是增长原来数组大小的1/2,Vector是2倍增长
4.遍历:Vector可以用Enumeration and Iterator但是Arraylist只能 Iterator
Note: ArrayList is preferable when there is no specific requirement to use vector.
当没有特定要求使用Vector,优先使用Arraylist ;
怎样选择用Arraylist还是Vector?
1.如果在多线程,优选Vector,单线程则选择Arraylist;
2.如果不知道数据量,但是知道增长速度,优选Vector因为可以在Vector总设置增长量
3.没有特殊要求,则优选Arraylist 因为Arraylist更快。
网友评论