共同点
都实现了集合框架中List接口,有序集合,存取有序,有索引,元素可重复,具体功能比较相似,都实现了增删改查功能,都提供了迭代器遍历内容
区别
存储结构
ArrayList和Vector内部是数组实现的,删除元素后,需要移动元素位置,初始化容量为10;
LinkedList 是基于双向链表实现的,包含头节点。
线程安全性
ArrayList,LinkedList是线程不安全的,如果要再并发环境下使用它们,可以用Coolections的静态synchronizedList对ArrayList和LinkedList进行调用;
Vector是线程安全的,它的大部分方法都包含了synchronized关键字,所以它的效率低于ArrayList和LinkedList。
扩容机制
ArrayList和Vector可以自动扩容,ArrayList扩容之后容量是原来的1.5倍;Vector扩容之后容量是原来容量的2倍;
Vector 可以指定扩容增量,ArrangList不能指定;
扩容方法都是创建新的数组,将旧的数据拷贝到新数组中,将新元素添加到新数组中
增删查效率
ArrayList和Vector 检索和末尾删除和添加元素,时间复杂度为O(1),指定位置插入和删除元素时间复杂度为O(n)
LinkedList 查询元素复杂度为O(n),插入和删除时间复杂度为O(1)
网友评论