vector和arraylist集合的区别
作者&投稿:赫蝶 (若有异议请与网页底部的电邮联系)
arraylist和vector的区别是什么呢?视频详细介绍,分分钟懂了
ArrayList和Vector功能类似。
整体上ArrayList是Vector的“裸奔新版”
Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。
所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能
ArrayList不具备线程同步的安全性,但速度较快,所以叫裸奔。
Vector具备线程安全。
1. Vector & ArrayList
1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
2. Hashtable & HashMap
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
3. ArrayList & LinkedList
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:
从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列 数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中 间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
如果在编程中,1、2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。
4. 配置集合类的初始大小
在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的,我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。
比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素,所以,如果你 知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重 新组织内存并增加大小。
Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
俎闻爱捷: 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的,这是...
韩城市17766046472: Vector还是ArrayList哪一个更好? ?
俎闻爱捷: 要回答这个问题不能一概而论,有时候使用Vector比较好;有时是ArrayList,有时候这两个都不是最好的选择.你别指望能够获得一个简单肯定答案,因为这要看你用它们...
韩城市17766046472: ArrayList跟Vector的区别? - ?
俎闻爱捷: Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素.Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由...
韩城市17766046472: Java中Vector和ArrayList的区别 - ?
俎闻爱捷: List是接口 ,定义了一些方法 但是方法没有被实现 ,ArrayList是一个类 ,实现了List这个接口. List里边定义的方法 ,在ArrayList里边都实现了, 同时List也可以被别的类所实现, 例如Vector, Vector和ArrayList对List定义的方法的实现就有所区别.
韩城市17766046472: vector和arraylist的区别 - ?
俎闻爱捷: vector 安全 arraylist线程不安全 一、从存储数据的方式来看:1、ArrayList是采用数组方式存储数据,实现了可变大小的数组.它允许所有元素,包括null.其特点:(1)ArrayList没有同步.(2)此数组元素数大于实际存储的数据...
韩城市17766046472: java 中 Vector ArrayList用法及区别 - ?
俎闻爱捷: 你是看了韩老师的视频吗?里面用的就是vector,比较安全 ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,...
韩城市17766046472: vector容器与list容器的区别和联系? - ?
俎闻爱捷: 楼主,首先我要说楼上说的是java的语法.就其本质,如自果你学习过数据结构的话,应该会明白array与list的区别.vector就是一个可靠版本的array.如果不明白我打个比方吧,比百如游戏中第一关打完第二关,第二关打完第三关,这种链式的结构就适合用list,而一些毫无关联的数据集合,比如你网络游戏中一个场景中出现的随机怪物就可以用vector,当然我说的只是例子,实际的数据结构会复杂很多..另外如果你的数据集合经常涉及插入,删除的操作,那就跟适合用list了,只是查度找操作比较多适合用vector.
韩城市17766046472: arraylist和vector list的区别 - ?
俎闻爱捷: 首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体实现类的相关区别如下:1.ArrayList是最常用的List实现类,内部...
韩城市17766046472: Java中Vector和ArrayList的区别 - ?
俎闻爱捷: vector是线程安全的,arrayList则不是.一般情况下使用ArrayList足以,如果是多线程情况下,建议使用vector.
韩城市17766046472: Java中 ArryList与Vetor有什么区别 - ?
俎闻爱捷: Vector与ArrayList相似,也实现List接口,可以用来声明动态数组.但与arraylist不同的是,Vector中包含了同步方法,可以防止两个以上线程同时访问引起的数据冲突.如果你编程用不到...