黑马程序员技术交流社区

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

作者: zhangfeng    时间: 2012-6-19 12:11
标题: ArrayList,Vector, LinkedList的存储性能和特性
本帖最后由 zhangfeng 于 2012-6-20 12:06 编辑

ArrayList,Vector, LinkedLi 三者在储存性和特征不明白
作者: 张华廷    时间: 2012-6-19 12:18
Java提供了两个类ArrayList和LinkedList,ArrayList的内部实现是基于内部数组Object[],ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间
ArrayList:我们可以将其看作是能够自动增长容量的数组。Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,利用ArrayList的toArray()返回一个数组。Arrays.asList()返回一个列表。ArrayList类扩展AbstractList并执行List接口。ArrayList支持可随需要而增长的动态数组。在Java中,标准数组是定长的。在数组创建之后,它们不能被加长或缩短,这也就意味着你必须事先知道数组可以容纳多少元素。但是,你直到运行时才能知道需要多大的数组。为了解决这个问题,类集框架定义了ArrayList 。本质上,ArrayList是对象引用的一个变长数组。也就是说,ArrayList能够动态地增加或减小其大小。数组列表以一个原始大小被创建。当超过了它的大小,类集自动增大。当对象被删除后,数组就可以缩小。

作者: 黑马张扬    时间: 2012-6-19 12:19
本帖最后由 黑马张扬 于 2012-6-19 12:20 编辑

ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList优于ArrayList ,因为ArrayList要移动数据。
Vector的方法都是同步的,是线程安全的.
ArrayList的方法不是同步的。
由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
当Vector或ArrayList中的元素超过它的初始大小时:
Vector会将它的容量翻倍。
ArrayList只增加50%的大小。
ArrayList就有利于节约内存空间。
作者: 余银桂    时间: 2012-6-19 12:41
-------------| ArrayList  使用数组实现,默认10,增长0.5倍,操作慢,查询快。
-------------| Vector     线程安全的ArrayList
         element()   elementAt()  Enumeration elements()
-------------| LinkedList 使用链表实现,操作快,查询慢,数据结构: 栈、队列、双队列




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