浅谈ArrayList、Vector与LinkedList的一些区别

学号:19011210554   姓名:袁博

转载自:https://blog.csdn.net/m0_37907797/article/details/80246625

【嵌牛导读】深入理解ArrayList、Vector与LinkedList

【嵌牛鼻子】:ArrayList、Vector与LinkedList的主要区别

【嵌牛提问】:分清ArrayList、Vector与LinkedList的使用情况

【嵌牛正文】:

ArrayList和LinkedList都实现了List接口,但它们在处理数据的方式上还是有很多区别的.

1.

       *ArrayList的底层数据结构是数组且线程不安全,在增删查等方面都拥有数组的特性。例如ArrayList在插入、查找方面都是很多,和数组一样,添加时直接在尾部添加,查找时直接根据索引来查找,复杂的度都是O(1)。不过,ArrayList在删除方面就比较慢,需要把删除元素中前面的那些元素向前移动,复杂度是O(n),当然,插入方面也比较慢,复杂度为O(n)。

       *LinkedList的底层数据结构是双向链表且线程不安全,具有链表的特性。因此LinkedList在插入和删除方面比较有优越性。但在查找方面的性能比较查

       *Vector与ArrayList很类似,底层数据结构也是数组,不过Vector是线程安全的

2.

     *虽然ArrayList与Vector很类似,不过在程序本身是线程安全的情况下,优先选择ArrayList。当你要添加一个元素进来时,Vector会请求更大的空间,每次请求都是自身的两倍,而ArrayList只对size增长50%。而且,由于Vector是线程安全的,在其他方面也会需要更大的开销。当然,在请求空间方面,LinkedList的性能更好,因为它是基于链表实时请求的。

       注意:默认情况下,ArrayList的初始容量非常小,所以如果我们事先大概需要多少容量的话,可以分配一个大概的初始值,这样,可以减少ArrayList每次调整大小的开销


3.综上:在插入和删除操作比较频繁的优先选择LinkedList

              在随机访问比较频繁的优先选择ArrayList

当然,这些都是建立在数据量比较大的情况下

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容