黑马程序员技术交流社区

标题: ArrayList,Vector, LinkedList 的存储性能和特性 [打印本页]

作者: 〆_xin_、_跳    时间: 2012-3-23 18:44
标题: ArrayList,Vector, LinkedList 的存储性能和特性
请教一下,各位朋友帮帮忙
作者: 刘元霄    时间: 2012-3-23 18:52
ArrayList :List的子类,底层数据结构使用的是数组结构,
它的特点:查询速度很快,增删稍慢。 它的线程不同步的。

LinkedList :List的子类, 底层数据结构是链表结构,
它的特点:  增删速度很快,查询稍慢。

Vextort : List的子类,底层数组结构, 线程同步,  被ArrayLisrt替代了。
作者: 周建    时间: 2012-3-23 19:35
1.1版本的集合只有Vector,1.2后有了集合框架,Vector,ArrayList,LinkList都是List的子类,Vector,ArrayList底层都是数据结构,但前者是线程同步的,增删,查询速度都很慢,且不安全,被ArrayList取代,LinkList底层链表结构,增删速度快,查询速度较慢,ArrayList查询速度快,增删速度较慢
作者: Destiny    时间: 2012-3-23 19:46
ArrayList与Vector都是基于数组实现的,这就说明ArrayList与Vector适合做遍历而不适合做频繁的插入和删除。
1 vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。
2如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.
3 如过在集合中使用数据量比较大的数据,用vector有一定的优势
4 LinkedList是基于链表实现的,所以它生来就是为了频繁插入与删除对象

就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的.
二.数据增长:当需要增长时,Vector默认增长为原来一倍,而ArrayList却是原来的一半. ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,
它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较 ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快.
作者: 吕猛    时间: 2012-3-23 22:25

不同集合的区别


如何选用集合

作者: 袁野    时间: 2012-3-23 22:33
都是List接口下的子类

ArrayList:数据结构是,数组数据结构。优点,查询,修改元素,速度快。缺点 ,增加,删除 速度慢 。不同步,效率高。
存储自定义对象,去除重复元素,必须复写Object 的equals(Object obj) ,contains(Object o) 会自动去调用equals方法

LinkedList:数据结构,链行,优点,增加,删除,速度快,缺点,查询速度慢,去除自定义元素 同上

Vector :数据结构,数组,线程同步,效率低,被ArrayList代替,(枚举)这是就是Vector 的迭代输出方式。
作者: 张一凡    时间: 2012-3-24 00:42
List
        |--Vector:底层数据结构是数组结构,是同步的。(已经过时)
                支持枚举接口Enumeration,其特点就是Vector的唯一取出方式。但是该接口因为名称过长,被Iterator所取代。
        |--ArrayList:底层数据结构是数组结构,是不同步的,替代了Vector。
                |--特点:查询元素的速度很快,但是增删速度较慢。
        |--LinkedList:底层的数据结构是链表数据结构,是不同步的。
                |--特点:增删的速度很快,但是查询的速度较慢。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2