ArrayList、Vector和LinkedList的区别

mac2025-11-03  14

前言

ArrayList、Vector、LinkedList都实现了List接口,都可以对元素进行增删改查等操作,但彼此又有一些不同,因为底层实现的不同,在不同场景下性能也不同。

ArrayList

底层为数组,可自动扩容,每次扩容为1.5倍。线程不安全支持随机访问,查询效率高插入和删除效率低,需要复制数组

Vector

底层为数组,可自动扩容,每次扩容为2倍。线程安全,方法都使用synchronized修饰(加锁)支持随机访问,查询效率高插入和删除效率低,需要复制数组

LinkedList

底层为双向链表。线程不安全不支持随机访问,查询效率差插入和删除效率高

总结

名称数据结构并发情况查询编辑扩容情况ArrayList数组线程不安全效率高插入和删除效率低1.5倍Vector数组线程安全效率高插入和删除效率低2倍LinkedList双向链表线程不安全效率低插入和删除效率高无需
最新回复(0)