首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ArrayList,VectorStack

本文非常详尽地介绍了Java中的三个集合类 ArrayList,VectorStack ”Java集合详解系列“是我在完成Java基础篇的系列博客后准备开始写的新系列。...数组一样,它包含可以使用整数索引进行访问的组件。不过,Vector的大小是可以增加或者减小的,以便适应创建Vector后进行添加或者删除操作。...ensureCapacityHelper(elementCount + 1); // elementData[elementCount++] = obj; // } 初始容量和扩容 扩容方式ArrayList...ArrayListVector的区别 ArrayList是线程非安全的,这很明显,因为ArrayList中所有的方法都不是同步的,在并发下一定会出现线程安全问题。...,它是ArrayList的线程安全版本,其实现90%和ArrayList都完全一样,区别在于: 1、Vector是线程安全的,ArrayList是线程非安全的 2、Vector可以指定增长因子,如果该增长因子指定了

62830

ArrayListVector比较

绿色部分内容已经很少用了,但在面试题中有可能会问到,我们来看一个经常出现的面试题:ArraylistVector的区别是什么?...首先我们给出标准答案: 1、Vector是线程安全的,ArrayList不是线程安全的。 2、ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。...看上图VectorArrayList一样,都继承自List,来看一下Vector的源码 实现了List接口,底层是数组实现 实现了List接口,底层和ArrayList一样,都是数组来实现的...先看ArrayList的remove方法 再看Vector的remove方法 方法实现上也一样,就是多了一个synchronized关键字,再看看ArrayList的get方法...和ArrayListVector一样,同样的类似关系的类还有HashMap和HashTable,StringBuilder和StringBuffer,后者是前者线程安全版本的实现。

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

ArrayListVector的区别

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

39610

arraylist linkedlist vector

ArrayList、LinkedListVector的对比 从图中可以看出,这三者都实现了 List 接口.所有使用方式也很相似,主要区别在于因为实现方式的不同,所以对不同的操作具有不同的效率。...ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过getset方法进行访问,因为ArrayList本质上就是一个数组....LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在getset方面弱于ArrayList....VectorArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%....Vector VectorArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized).因此,开销就比ArrayList要大.正常情况下,大多数的Java程序员使用

27120

java之Vector使用(ArrayList区分)

ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用。...包括Vector的创建、向Vector中添加元素、从Vector中删除元素、 * 统计Vector中元素的个数和遍历Vector中的元素。...Vector 类提供的访问方法支持类似数组运算和Vector 大小相关的运算。类似数组的运算允许向量中增加,删除和插入元素。...它们也允许测试矢量的内容和检索指定的元素,大小相关的运算允许判定字节大小和矢量中元素不数目。  ...protected void removeRange(int fromIndex, int toIndex) 从此 List 中移除其索引位于 fromIndex(包括) toIndex(不包括)

3.4K10

ArrayList Vector LinkedList(一)

ArrayList Vector LinkedList 区别用法 ArrayListVector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计...和LinkedList一样,ArrayList也是非同步的(unsynchronized)。 Vector类   Vector非常类似ArrayList,但是Vector是同步的。...由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的, 当一个Iterator被创建而且正在被使用,另一个线程改变了Vector...同步性 Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。...数据增长 从内部实现机制来讲ArrayListVector都是使用数组(Array)来控制集合中的对象。

41160

java集合【12】——— ArrayList,LinkedList,Vector的相同区别?

线程安全性不同 ArrayList和LinkedList都不是线程安全的,但是Vector是线程安全的,其底层是用了大量的synchronized关键字,效率不是很高。...扩容机制 ArrayListVector底层都是使用数组Object[]来存储,当向集合中添加元素的时候,容量不够了,会触发扩容机制,ArrayList扩容后的容量是按照1.5倍扩容,而Vector...Vector可以设置每次扩容的增加容量,但是ArrayList不可以。...和ArrayList在单线程环境其实差不多,多线程环境会比较明显,这里就不测试了: ArrayList :18 LinkedList :61480 Vector :21 测试删除操作的代码如下,删除的时候我们是不断删除第...ArrayList: 7177 LinkedList: 34 Vector: 6713 下面来测试一下,vector多线程的环境,首先两个线程,每个删除5w元素: package com.aphysia.offer

38920

ArrayList、LinkedList、 Vector、Map 用法比较

VectorVector非常类似ArrayList,但是Vector是同步的。...由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态...使用场景比较 1) 同步性 Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。 ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。...2) 数据增长 从内部实现机制来讲ArrayListVector都是使用数组(Array)来控制集合中的对象。...参考推荐: ARRAYLIST VECTOR LINKEDLIST区别 ArrayList、LinkedList、Vector的关系和区别 Java 集合类Array、List、Map区别和联系 C

60930

深入解析 Java集合类ArrayListVector的区别

今天我们从相同点、不同点、以及JDK源码等各个方面来深入解析下,底层使用数组实现的两个集合类:ArrayListVector的区别联系 区别联系: 1.ArrayList出现于jdk1.2,vector...(2)解析Vector扩容源码 ①首先调用add方法,arraylist相同,vector也有一个继承父类的成员变量modCount来记录修改次数。...其中, capacityIncrement为自定义的增长因子(此处arrayList不同,arraylist默认增长1.5倍;vector可以自定义若不自定义,则增长2倍,若定义则新长度=之前的长度...数组长度等于实际元素个数 Vector: (1)Vector v1 = new Vector(10,2); 指定初始长度(initialCapacity)增长因子(capacityIncrement...,另外,性能上的差别还体现在底层的Object数组上 vector: arrayList: 可以看出来,arrayList多了一个transient关键字,这个关键字的作用是防止序列化,然后在ArrayList

44420

Collection实现类解析ArrayList,LinkedList,Vector

,LinkedList,Vector的特性 /** * 有序集合List接口的实现类LinkedLIst,ArrayList,Vector,Stack * (1)ArrayList...* (2)VectorArrayList一样,也是通过数组实现的。不同的是它支持线程的同步,即一时刻只有一个线程能够写Vector, * 避免多线程同时写引起的不一致性。...但实现同步需要很高的花费, 因此,访问它比访问ArrayList慢。 * 2.1 VectorArrayList在更多元素添加进来时会请求更大的空间。...Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%....* 2.2 VectorArrayList都是用数组实现的,所以,在添加和插入时,最好从表尾操作,而不要从中间或者表头开始,以避免数组移动引起的开销!

12640

Java 中 ArrayList,LinkedList和Vector主要区别概述

ArrayListLinkedList 主要区别 ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。...Vector public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable...VectorArrayList几乎是一样的,区别在于Vector是线程安全的,因为这个原因,它的性能较ArrayList差。...通常情况下,大部分程序员都使用ArrayList,而不是Vector,因为他们可以自己做出明确的同步操作。 Vector 类可以实现可增长的对象数组。数组一样,它包含可以使用整数索引进行访问的组件。...但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。

1.9K20

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

ArrayList, LinkedList, Vector - dudu:史上最详解 我们来比较一下ArrayList, LinkedLIst和Vector它们之间的区别。...2.Vector 之所以把Vector放在这里的原因是因为VectorArrayList是否类似,但是它是属于线程同步(支持并发)的数组,并且内部值也可以为null。...概括起来大概是这个样子: ArrayListVector它们底层实现为数组,值可为null, ArrayList不支持并发,Vector支持并发; LinkedList底层基于双链表,因此在add/remove...和ArrayList是否类似,Vector是一个可变大小的数组。...和ArrayList相比,不同之处在于Vector的很多方法都加了关键字synchronized,使得Vector具有了同步功能,支持并发。

67830
领券