Arraylist、vector、Linkedlist的比较

?
?

总结

?
?

首先它们的底层实现不同,Arraylist和vector都是基于数组实现的,而Linkedlist是基于链表实现的

?
?

另外虽然vector和arraylist都同样是基于数组实现的,但vector的源码中有很多synchronized方法,说明是线程安全的,同步的,而Arraylist是线程不安全的,非同步的

?
?

由于加了很多synchronized方法,造成vector会慢

?
?

比如我同样往这两种数据结构中加入2,000,000个同样的字符串,比较其插入的时间

?
?

86 millis has passed when using Arraylist.

124 millis has passed when using Vector.

?
?

测试代码

?
?

public class ArraylistAndLinkedlistAndVector {

private static final String base = " base string. ";

private static final int count = 2000000;

?
?

public static void ArraylistTest() {

long begin, end;

begin = System.currentTimeMillis();

ArrayList list = new ArrayList<>();

for (int i = 0; i < count; i++) {

list.add(" add ");

}

end = System.currentTimeMillis();

System.out.println((end - begin)

+ " millis has passed when using Arraylist. ");

}

?
?

public static void linkedlistTest() {

long begin, end;

begin = System.currentTimeMillis();

LinkedList list = new LinkedList<>();

for (int i = 0; i < count; i++) {

list.add("add");

}

end = System.currentTimeMillis();

System.out.println((end - begin)

+ " millis has passed when using Linkedlist. ");

}

?
?

public static void vectorTest() {

long begin, end;

begin = System.currentTimeMillis();

Vector vector = new Vector<>();

StringBuilder test = new StringBuilder(base);

for (int i = 0; i < count; i++) {

vector.add("add");

}

end = System.currentTimeMillis();

System.out.println((end - begin)

+ " millis has passed when using Vector. ");

}

?
?

public static void main(String[] args) {

ArraylistTest();

linkedlistTest();

vectorTest();

?
?

}

?
?

时间: 2024-08-07 13:26:52

Arraylist、vector、Linkedlist的比较的相关文章

ArrayList,Vector,LinkedList的存储性能和特征

ArrayListh和Vector都是采用数组的方式来存储数据,其中ArrayList是线程不安全的,Vector是线程安全,所以ArrayList的性能要比Vector的性能好一些,而LinkedList采用的双向链表来实现数据的存储,而且是线程不安全的,而且LinkedList提供了一些方法,使得LinkedList可以被当做栈和队列来使用.因为ArrayList和Vector采用的数组的方式来实现存储数据,所以查询数据比较快捷,但是进行数据增删操作比较慢些,但是LinkedList采用的事

ARRAYLIST VECTOR LINKEDLIST 区别与用法

最近用到了,所以依然是转载 ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快! 线性表,链表,哈希表是常用的数

java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)

说起集合,我们会潜意识里想到另外一个与之相近的名词——数组,OK!两者确实有相似之处,但也正是这点才是我们应该注意的地方,下面简单列出了两者的区别(具体功能的不同学习这篇文章后就会明白了): 数组 长度固定 既可以存储基本数据类型,也能存储引用数据类型 一个数组中的元素类型必一致 集合 长度可变 只能存储引用数据类型 一个集合中的元素类型可以是任意的引用类型 一.集合概述 Collection<E> 父接口 List<E> 子接口 ArrayList<E>类 Vecto

【考点】说出ArrayList,Vector, LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快.

说出 ArrayList,Vector, LinkedList 的存储性能和特性?

ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际 存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元 素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由 于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历, 但是插入数据时只需要记录本项的前后项即可,所以插入速度较快.

请说出ArrayList,Vector, LinkedList的存储性能和特性

解答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快. 原文地址:https://www.cnblo

说出ArrayList,Vector, LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快. LinkedList也是线程不安全的,Linked

请说一下 ArrayList,Vector, LinkedList的区别

答:ArrayList和Vector使用数组的方式存储数据,LinkedList采用双端链表的方式存储数据. 由于插入和移除数据时ArrayList和Vector需要对数组元素进行移动和索引进行重排序,而LinkedList只需要直接在头或者尾进行操作,所以在插入和移除数据效率上LinkedList会比ArrayList和Vector好一点. 由于ArrayList和Vector在查询数据时候可以使用索引,而LinkedList则需向前或者向后遍历,所以查询性能上LinkedList会慢一点.而

List 接口中ArrayList Vector LinkedList 比较

访问权限Arryist最快 其次Vector  最慢LinkedList 原文地址:https://www.cnblogs.com/wangbiaohistory/p/9961261.html

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它