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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张会文 中级黑马   /  2012-12-30 21:09  /  1840 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张会文 于 2012-12-31 19:03 编辑

ArrayList,Vector, LinkedList都有什么样的存储性能和特性,我都搞糊涂了,求解

8 个回复

倒序浏览

ArrayList:数组结构,查询快,增删慢,线程不同步
LinkedList:链表数据结构,增删快,查询慢
vector:数组结构,线程同步,被ArrayList替代了  

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.ArrayList 顺序存储,所以查询时候直接找到数组下标----比较快,但如果增加或删除就慢了,因为该下标后面的元素都要向前或者向后移动;
2.LinkedList 链式存储,增加和删除较快,因为直接链上就行了,不存在下标移动问题,查询相对来说就慢了,因为要从头来嘛,直到找到为止。
3.Vector和ArrayList基本一致,不同的就是Vector是线程同步的,但已经不怎么用了;
回复 使用道具 举报
都是可伸缩的数组,就是可以动态改变长度的数组。
ArrayList类是jdk1.1后出现的,在内存中是队列形式存储,适合查找。他不是线程安全的。
Vector类是较老的数组列表,他是线程安全的。
LinkedList类是链表结构的数组,它适合增删改的操作,但与ArrayList相比,查询效率较低。
实际应用中:ArrayList是最常用的。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ArrayList与Vector都是基于数组实现的,这就说明ArrayList与Vector适合做遍历而不适合做频繁的插入和删除。
vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。
而且如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.
如过在集合中使用数据量比较大的数据,用vector有一定的优势
LinkedList是基于链表实现的,所以它生来就是为了频繁插入与删除对象。

希望帮到你

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
冉世友 发表于 2012-12-30 21:47
ArrayList:数组结构,查询快,增删慢,线程不同步
LinkedList:链表数据结构,增删快,查询慢
vector:数 ...

不能说成被ArrayList取代了,是jdk1.2集合框架的成员Collections出现了使不同步集合线程安全的方法,如果你是增删用的多,查询少的花肯定用LinkedList
回复 使用道具 举报
ying 中级黑马 2012-12-31 00:13:38
7#
ArrayList,Vector,LinkedList的储存性能和特性
1. ArrayList与Vector是基于数组实现的,这说明ArrayList与Vector涉河便利而不涉河做
频繁的插入和删除
Vector是线程同步的,所以他也是线程安全的,而ArrayList是线程异步的是不安全的,如果
要考虑线程安全的话一般就用Vector
如果集合中的元素大于目前数组的长度时,Vector增长为目前数组出昂杜的100%,而ArrayList
增长为目前数组长度的50%。

如果在集合中使用数据量比较大的数值,用Vector有一定的优势

inkList是基于链表实现的,所以常用于频繁的插入删除操作,

2. 就ArrayList与Vector主要从两方面来说
2.1同步性:Vector是线程安全的你也就是说是线程同步的,而ArrayList是线程不安全的,不是同步的
2.2 数组增长:当需要增长时,Vector默认增长原来的一倍,而ArrayList却是增长到原来的一半,
ArraylIst 和Vector都是使用数组方式储存数据。
他们都允许直接按序号索引数据,但在插入数据要涉及到数组元素的一定操作,所以索引数据块
插入数据慢,Vector由于使用了synchronized方法线程安全的,通常操作的速度慢于Arraylist,
而LiinkedList是双向链表实现储存,使用序号索引数据要进行向前向后遍历,但在插入式只需要
记录本数据前后项即可,所以插入数据较快。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ArrayList:底层的数据结构使用的是数组结构。默认长度为10,50%延长。特点:查询速度快,但是增删稍慢。线程不同步。
LinkedList:底层使用的是链表数据结构。特点:查询速度很慢,但是增删很快。
Vertor:底层的数据结构使用的是数组结构。线程同步。被ArrayList替代了。默认长度为10,不够长度是100%延长。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 补足你的技术分。

查看全部评分

回复 使用道具 举报
谢毅 发表于 2012-12-30 23:46
不能说成被ArrayList取代了,是jdk1.2集合框架的成员Collections出现了使不同步集合线程安全的方法,如果 ...

嗯,这样啊,多谢~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马