ArrayList,Vector,LinkedList区别

共同点

都实现了集合框架中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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容