Vector、ArrayList、LinkedList区别
Vector 和ArrayList的大致区别如下:
1 Vector是多线程安全的,而ArrayList不是,如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;Vector是旧的,是java一诞生就提供了的,ArrayList是java2时才提供的。(可以拿Hashtable 与 HashMap 相比较)
2 两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式是不同的,Vector增加原来空间的一倍(默认大小10),ArrayList增加原来空间的50%(默认大小10).
3 Vector可以设置增长因子,而ArrayList不可以,Vector比Arraylist多一个构造方法,public Vector(int initialCapacity,int capacityIncrement)这个构造方法,capacityIncrement就是容量增长,即增长因子,ArrayList中是没有的
ArrayList和LinkedList的大致区别如下:
1 ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
2 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针
3 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。
LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间