关于各种List类型特点以及使用的场景

在日常开发中,经常使用到ArrayList类型,也就是List接口的实现类,List和Set接口又都继承了Collection接口。
总不能总是使用ArrayList和HashSet吧?
所以借此机会梳理一下各个实现类的特点以及使用场景:
1、ArrayList
优点:数组实现,可以通过索引快速访问
缺点:
1、插入和删除元素,需要频繁移动元素位置
2、数组空间不够需要扩容时,会开辟新数组把就数组拷贝过去,耗性能
3、线程不安全
2、LinkedList
双向链表实现
优点:使用链表实现,适合动态插入和删除
缺点:
1、随机访问元素的速度较慢
2、基于链表数据结构的实现,占用的内存空间较大(除了保存数据本身,还要保存指针信息)
3、Vector
基于数组数据结构实现
优点:线程安全
缺点:效率低,插入、删除、查找元素所有操作的效率都很低
使用场景:
arrayList
由于有动态扩容的特性,适合在不知道列表大小的时候使用
适合快速随即查找和遍历
不适合频繁插入和删除操作
linkedList
适合需要随机插入、删除效率要求比较高的时候
可以作为队列和栈使用
vector
一般开发中很少使用。

posted @ 2024-08-06 01:31  SoulSmoke  阅读(107)  评论(0)    收藏  举报