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()只会影响它的前一个元素和后一个元素。


posted @ 2019-11-11 19:00  cow09  阅读(168)  评论(0)    收藏  举报