Java中的ArrayList、Vector和LinkedList的区别

来源:互联网 发布:网络语笔芯是什么意思 编辑:程序博客网 时间:2024/06/05 05:36
Java中Vector、ArrayList和LinkedList的区别
首先这3个类都实现了List这个接口,也仅有这3个实现类,List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体类的相关区别如下:
1.ArrayList是最常用的一个类,内部是通过实现数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间没有间隔,当数组的大小不能满足时,即需要增加数组空间时,就要将已经有的数组元素赋值到新的存储空间中。当我们知道它是通过数组的特点来实现这个类时,就会发现当我们涉及数组元素的插入、修改和移动时,它就会付出很大的代价,因为这些操作都会执行数组的赋值操作(前面提到的)。因此,这个实现类适合随机查找和遍历,而不适合插入、删除和移动等。
2.Vector和ArrayList一样,也是通过数组来实现的,不同的是它支持线程的同步,即在某一时刻只有一个线程能够写Vector,避免多线程写而引起的不一致性,但实现同步需要很高的代价,因此,访问它比访问ArrayList慢。
3.LinkedList是用链表结构存储数据的,因此很适合数组元素动态的删除和插入,但随即访问和遍历速度比较慢。另外,这个实现类还List接口中没有声明的方法,专门用于操作表头和表尾元素,可以当做堆栈、队列和双向队列使用。