本文主要是介绍Java中Vector、ArrayList、LinkedList的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
List能够用于存放多个元素,维护元素的次序(按元素进入的顺序保存对象),并且允许元素重复(虽然List和Set都是继承自Collection接口,但在这一点有区别,Set不允许有重复的元素)。
在Java中List接口有三个实现类,分别是ArrayList、Vector和LinkedList。3个具体实现类的区别如下:
ArrayList:最常用的List实现类,基于动态数组的数据结构。具有数组形式存储的优缺点:可以对元素进行快速的随机访问,但如果当前存储空间不满足时就要申请新的存储空间并进行复制、移动;适合随机查找、遍历,根据下标直接存取元素,但不适合插入和删除;
Vector:与ArrayList相似,内部通过数组实现,但它支持线程的同步,即某一时刻只能有一个线程个性Vector,避免了多线程同时写时引起的不一致性,但实现同步需要很高的代价,所以访问比较慢;
LinkedList:是使用双向链表实现存储数据的,基于链表的数据结构,所以可以非常方便的进行插入、删除数据项(只需要修改一下指针即可),但对元素的访问就变得比较慢了。同时LinkedList也是线程不安全的,LinkedList提供了一些方法使得LinkedList可以被当作堆栈和队列来使用。
同时,从上面的区分中可以发现ArrayList和Vector同是数组形式实现的,二者的区别如下主要在多线程上:
类 | 速度 | 多线程安全性 | 适用方面 |
Vector | 慢 | 安全 | 提供了线程同步 多线程是安全的 (适用于网络编程、多线程) |
ArrayList | 快 | 不安全 | 多线程不安全 (适用于单线程) |
这篇关于Java中Vector、ArrayList、LinkedList的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!