展开

关键词

arraylist linkedlist vector

LinkedList 是一个双链表,在添加删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList. 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据运算量很小,那么对比将失去意义. Vector ArrayList类似,但属于强同步类。 VectorArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%. Vector VectorArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized).因此,开销就比ArrayList要大.正常情况下,大多数的Java程序员使用 ArrayList而不是Vector,因为同步完全可以由程序员自己来控制。

16320

ArrayList VS Vector(ArrayListVector的区别)_面试的时候经常出现

数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 这个我们可以看看他们的源码就可以知道 : ArrayList的size()方法: 1 /** 2 * Returns the number of elements in this list. 3 * 4 * @ elementCount; 8 } 其实Vector的其他很多方法都是同步的: 1 /** 2 * Sets the size of this vector. 下面给出ArrayList线程不安全证明方案: 1 /** 2 * 3 */ 4 package com.b510; 5 6 import java.util.ArrayList; 的源码: ArrayList:grow() 1 /** 2 * Increases the capacity to ensure that it can hold at least the

1.9K20
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ArrayList Vector LinkedList(一)

    ArrayList Vector LinkedList 区别与用法 ArrayList Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,但是插入数据要设计 LinkedList一样,ArrayList也是非同步的(unsynchronized)。 Vector类   Vector非常类似ArrayList,但是Vector是同步的。 由Vector创建的Iterator,虽然ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的, 当一个Iterator被创建而且正在被使用,另一个线程改变了Vector 数据增长 从内部实现机制来讲ArrayListVector都是使用数组(Array)来控制集合中的对象。 使用模式 在ArrayListVector中,从一个指定的位置(通过索引)查找数据或是在集合的末尾增加、移除一个元素所花费的时间是一样的,这个时间我们用O(1)表示。

    17260

    ArrayList,Vector与Stack

    本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack ”Java集合详解系列“是我在完成Java基础篇的系列博客后准备开始写的新系列。 后面还会另外讲底层是链表实现的linkedlistqueue; 今天我们来探索一下ArrayListVector,以及Stack的源码 更多关于Java后端学习的内容请到我的CSDN博客上查看:https 所以在这里大家建议,当大家遍历那些非线程安全的数据结构时,尽量使用迭代器 初始容量扩容方式 初始容量是10,下面是扩容方法。 ArrayListVector的区别 ArrayList是线程非安全的,这很明显,因为ArrayList中所有的方法都不是同步的,在并发下一定会出现线程安全问题。 ,它是ArrayList的线程安全版本,其实现90%ArrayList都完全一样,区别在于: 1、Vector是线程安全的,ArrayList是线程非安全的 2、Vector可以指定增长因子,如果该增长因子指定了

    31030

    ArrayListVector、LinkedList的存储性能特性

    ArrayList Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢 ,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。 Vector属于遗留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用,但是由于ArrayList LinkedListed都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用(这是对装潢模式的应用

    26610

    从源码分析ArrayListVector的区别

    1.VectorArrayList 可能你对ArrayList平时耳熟能详,但是你可能却不知道VectorVector其实ArrayList的用法基本一致,不同的在于Vector是线程安全的而 Vector之所以线程安全是因为在实现的方法上加了synchronized修饰符。 ? ? ArrayListVector的类继承实现图如下 ? ? 2.ArrayListVector的add方法对比 Vector的add方法实现如下,在看Vector方法前我们先看一下他的构造方法,当我们默认调用第一个构造方法时实际上会指定一个初始化的数组容量为 与Vector的grow方法不同,ArrayList的扩容机制是1.5倍进行扩容。 ? 最后我们总结一下ArrayList的add方法Vector的add方法区别如下 1.ArrayList的add方法非线程安全,Vector的add方法线程安全。

    16931

    ArrayListVector的区别

    ArrayListVector都是java的集合类,都是实现了List接口的实现类 一:同步性: Vector是同步的,该类的方法保证了Vector对象是线程安全的,而ArrayList是异步的,因此 ArrayList中的对象并不是线程安全的,因为同步的要求会影响执行的效率。 所以如果比不需要线程安全的集合,那么应该毫不犹豫的使用ArrayList,这样可以避免由于同步带了的不必要的开下。 二:数据增长: 从内部实现机制来讲,ArrayListVector都是使用数组来控制集合中的对象,当你向这两种类型中增加元素的时候,如果元素的数目超出了目前数组的长度,它们都需要扩展内部数组的长度,Vector ArrayList增长为原来50%,所以见你最后获得的这个集合所占的空间,总是比你实际需要的更大。

    14810

    集合框架(ArrayList,LinkedList,Vector

    ArrayList特点:底层使用数组数据结构,查询速度快(使用脚标查),插入删除慢(索引要改变) LinkedList特点:底层使用链表数据结构,查询慢(需要一个一个去问),插入删除快 Vector特点 :底层是数组数据结构,线程同步,被ArrayList替代了 ArrayList import java.util.ArrayList; public class ArrayListDemo { getSingleArray(ArrayList array){ ArrayList res=new ArrayList(); for(Object obj:array 有关的,枚举 import java.util.Enumeration; import java.util.Vector; /** * Vector demo * @author taoshihan (); v.add("vector1"); v.add("vector2"); v.add("vector3"); Enumeration

    17520

    ArrayListVector、LinkedList的存储性能特性简述

    ArrayList Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢 ,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。 Vector属于遗留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用,但是由于ArrayList LinkedListed都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用(这是对装潢模式的应用

    37120

    ArrayList、LinkedList、 Vector、Map 用法比较

    ArrayListVector是采用数组方式存储数据,此数组元素总数大于实际存储的数据个数以便增加插入元素,二者都允许直接序号索引元素,但是插入数据要移动数组元素等内存操作,所以它们索引数据快 VectorVector非常类似ArrayList,但是Vector是同步的。 由Vector创建的Iterator,虽然ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态 2) 数据增长 从内部实现机制来讲ArrayListVector都是使用数组(Array)来控制集合中的对象。 参考推荐: ARRAYLIST VECTOR LINKEDLIST区别 ArrayList、LinkedList、Vector的关系区别 Java 集合类Array、List、Map区别联系 C

    30430

    Java 容器 & 泛型(2):ArrayList 、LinkedListVector比较

    实现List的有:ArrayList、LinkedList、Vector、Stack等。 值得一提的是,Vector在JDK1.1的时候就有了,而List在JDK1.2的时候出现,待会我们会聊到ArrayListVector的区别。 二、ArrayList vs. ArrayList 1、vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。 AarraylistLinkedlist 1、对于随机访问getset,ArrayList觉得优于LinkedList,LinkedList要移动指针。 2、于新增删除操作addremove,LinedList比较占优势,ArrayList要移动数据。

    23810

    Java 容器 & 泛型:二、ArrayList 、LinkedListVector比较

    今天泥瓦匠想说说 ArrayList 、LinkedList Vector 比较。 一、List 回顾 序列(List),有序的 Collection,正如它的名字一样,是一个有序的元素列表。 值得一提的是,Vector 在 JDK1.1 的时候就有了,而List 在 JDK1.2 的时候出现,待会我们会聊到 ArrayList Vector 的区别。 二、ArrayList vs. 但与新的 Collection 不同的是,Vector 是同步的。泥瓦匠想说的是 Vector,在像查询的性能上会比 ArrayList 开销大。 泥瓦匠留给大家 LinkedList 的一些方法自己消化: 四、总结 泥瓦匠总结如下: Vector ArrayList 1、vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的 2、于新增删除操作addremove,LinedList比较占优势,ArrayList要移动数据。

    6530

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

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

    28120

    VectorArrayList、LinkedList有何区别?

    VectorArrayList、LinkedList均为线型的数据结构,但是从实现方式与应用场景中又存在差别。 1 底层实现方式 ArrayList内部用动态数组来实现;LinkedList内部采用双向链表实现;Vector内部用是 Java 早期提供的线程安全的动态数组实现。 VectorArrayList仅在插入元素时容量扩充机制不一致(扩容大小为原来的1倍)。 3 读写效率 ArrayList对元素的增加删除都会引起数组的内存分配空间动态发生变化。因此,对其进行插入删除速度较慢,但检索速度很快。 4 线程安全性 ArrayList、LinkedList为非线程安全;Vector是基于synchronized实现的线程安全的ArrayList

    17120

    经典面试题-ArrayList、LinkedListVector的区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接本声明。 本文链接:https://blog.csdn.net/weixin_42528266/article/details/103106176 ArrayList:底层数据结构是数组,运行所有元素,包括null Vector:底层数据结构是数组,查询快,增删慢,线程安全(同步),效率低~! LinkedList:底层数据结构是链表,允许null元素,查询慢,增删快,线程不安全(非同步),效率高!

    21810

    对比VectorArrayList、 LinkedList有何区别

    对比VectorArrayList、 LinkedList有何区别? ArrayList 是应用更广泛的动态数组,本身不是线程安全的,与 Vector 相似, ArrayList 也是可以根据需要调整容量,不过两者间的调整有区别,Vector 在扩容时提高一倍, ArrayList VectorArrayList仅在插入元素时容量扩充机制不一致。 读写效率 ArrayList对元素的增加删除都会引起数组的内存分配空间动态发生变化。因此,对其进行插入删除速度较慢,但检索速度很快。 线程安全性 ArrayList、 LinkedList为非线程安全; Vector是基于synchronized实现的线程安全的ArrayList

    12610

    对比VectorArrayList、LinkedList有何区别?

    Vector 内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。    ArrayList 是应用更加广泛的动态数组实现,它本身不是线程安全的,所以性能要好很多。 与 Vector近似,ArrayList 也是可以根据需要调整容量,不过两者的调整逻辑有所区别,Vector 在扩容时会提高 1 倍,而 ArrayList 则是增加 50%。    谈谈不同容器类型适合的场景:   Vector ArrayList 作为动态数组,其内部元素以数组形式顺序存储的,内存为一连续的区域,所以非常适合随机访问的场合。 除了尾部插入删除元素,往往性能会相对较差,比如我们在中间位置插入一个元素,需要移动后续所有元素。数组大小固定,不适合动态存储,不方便动态添加。

    6250

    java之Vector使用(与ArrayList区分)

    ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用。 包括Vector的创建、向Vector中添加元素、从Vector中删除元素、 * 统计Vector中元素的个数遍历Vector中的元素。 初始的存储容量capacityIncrement 可以在Vector 的构造函数中定义。第二个构造函数只创建初始存储容量。 Vector 类提供的访问方法支持类似数组运算Vector 大小相关的运算。类似数组的运算允许向量中增加,删除插入元素。 (0)存入学生编号 Vector(1)存入学科      在Panel 中当用户在TextField Choice 中选择自己所要求的内容,程序中通过事件响应把值传到向量Vector 中。

    1.8K10

    Java进阶:【集合】1.8 jdk ArraylistVector集合源码分析

    1.8 jdk Arraylist集合源码分析 底层数组,size是有效数据的长度, 在1.8中调用无参数构造器时底层的elementdata数组初始化为{ } add方法 在调用 add方法后底层数组才重新赋值,为新的数组,长度为10,节省了内存,只有在需要添加的时候我们才要创建数组 Vector接口 底层是Object数组,int类型属性表示数组中的有效数据 Vector vr = new Vector();调用构造器的时候 add listVector的区别 底层都是数组的扩容 区别: ArrayListArrayList底层扩容长度为缘数组的1.5倍,线程不安全 ,效率高 Vector: 底层扩容长度为原数组的两倍,线程安全,效率地,已经淘汰 底层都为数组: 优点:查询效率高 缺点:删除元素效率低, 特点:可重复

    11020

    ArrayList, LinkedList, Vector - dudu:史上最详解

    ArrayList, LinkedList, Vector - dudu:史上最详解 我们来比较一下ArrayList, LinkedLIstVector它们之间的区别。 ,LinkedListVector的区别 ArrayList, LinkedListVector都实现了List接口,所使用的方法也很相似,主要区别在于实现方法的不同,所有对不同的操作具有不同的效率 2.Vector 之所以把Vector放在这里的原因是因为VectorArrayList是否类似,但是它是属于线程同步(支持并发)的数组,并且内部值也可以为null。 ArrayList是否类似,Vector是一个可变大小的数组。 ArrayList相比,不同之处在于Vector的很多方法都加了关键字synchronized,使得Vector具有了同步功能,支持并发。

    32430

    扫码关注云+社区

    领取腾讯云代金券