A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zhangfeng 于 2012-6-20 12:06 编辑

ArrayList,Vector, LinkedLi 三者在储存性和特征不明白

3 个回复

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

评分

参与人数 1黑马币 +1 收起 理由
zhangfeng + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 黑马张扬 于 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就有利于节约内存空间。

评分

参与人数 1黑马币 +1 收起 理由
zhangfeng + 1 赞一个!

查看全部评分

回复 使用道具 举报
-------------| ArrayList  使用数组实现,默认10,增长0.5倍,操作慢,查询快。
-------------| Vector     线程安全的ArrayList
         element()   elementAt()  Enumeration elements()
-------------| LinkedList 使用链表实现,操作快,查询慢,数据结构: 栈、队列、双队列
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马