首页 > 试题广场 >

ArrayList,Vector,LinkedList的存储

[问答题]
请简要说明ArrayList,Vector,LinkedList的存储性能和特性是什么?
arraylist和vector都是以数组的方式存储数据,vector使用了线程安全,linkedlist以双向链表存储数据
编辑于 2019-04-28 19:50:00 回复(0)
更多回答
vector是线程安全的,所以在进行存储时会比arraylist慢
发表于 2019-01-05 20:46:36 回复(0)
ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,时间复杂度为O(1),但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,时间复杂度为O(n),Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
发表于 2020-04-08 00:12:36 回复(0)
Vector和ArrayList底层都是采用数组方式进行存储数据,对于访问数组中的元素很快因为可以按照序号进行查找,但是对于增加和插入就很慢,因为需要移动所有的元素,其中Vectory是线程安全的因为方法中实现synchronized,
LinkedList是基于双向链表实现的,继承了链表的优点移动删除元素方便,但是不能够随机访问,就是查找慢,也是线程不安全的
发表于 2019-08-24 23:13:01 回复(0)
ArrayList和Vector底层都是采用数组的方式存储数据,继承数组的优缺点:对于随机访问元素很方便,对于移动和删除元素很慢,复杂度为O(n),当元素数量达到当前容量时需要进行扩容,此时进行创建新数组并使用sysytem.arraycopy将旧数组元素复制到新数组中,该过程将造成大量的开销。ArrayList与Vector不同的是synchronized修饰其所有方法,因此线程安全,但性能上要比ArrayList要差。
LinkedList是基于双向链表实现的,继承链表的优缺点:移动和删除元素很方便,但是不能够随机访问数据,查找数据时需要进行遍历,JDK对于LinkedList查找进行优化,其内部存储着链表的头尾指针,按照索引序号是否超过长度一半进行向后或向前查找,而且每次插入元素只需要固定的开销即可,无需扩容。
发表于 2019-06-22 13:37:26 回复(0)
ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!
发表于 2019-05-05 10:01:19 回复(0)
Arraylist是不同步的,arraylist增长为原来的一半而vector是线程同步的,增长为原来的一半,Arraylist该查速度快,是通过下标,而linklist增删快,只需要移动指针
发表于 2019-04-30 19:09:18 回复(0)
Arraylist是不同步的,arraylist增长为原来的一半而vector是线程同步的,增长为原来的一半,Arraylist该查速度快,是通过下标,而linklist增删快,只需要移动指针
发表于 2019-03-06 22:32:20 回复(0)