Vector与ArrayList 和 LinkedList 的区别
1、Vector和ArrayList是基于数组实现的自动增长动态数组,LinkList是基于链表实现动态增长。
2、List中的元素允许重复,元素有序,而Set中的元素不允许重复,元素无序。
3、对于删除或者更改指定位置的元素,LinkList要比ArrayList更加方便。
4、查找方面Vector和ArrayList比LinkList快多了,因为LinkList要挨个遍历。
5、Vector是线程安全的,ArrayList和LinkList是非线程安全的。
(1)扩容
ArrayList里面维护了一个数组,add时:
检查数组的大小是否足够,如果不够将创建一个尺寸扩大一倍新数组, 将原数组的数据拷贝到新数组中,原数组丢弃,这里会很慢
调用数组方法:
Arrays.copyOf(elementData, newCapacity)
(2)多个元素发生移动
remove时:
移除一个元素会导致多个元素发生移动
数组是连续存储的,所以它的索引速度非常快
LinkList是基于链表实现的数据结构,所以remove()和add()只会影响它的前一个元素和后一个元素。

浙公网安备 33010602011771号