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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高顺德 中级黑马   /  2013-3-26 16:48  /  1524 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


ArrayList,Vector, LinkedList的存储性能怎么比较?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 18:44

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
ArrayList底层的数据结构使用的数组结构(级存储数据的方式),特点在于有索引查询速度很快,但是增删稍慢。线程不同步。ArrayList初始容量为10,如果超过增加一半。
LinkList底层的数据结构使用的双向链表结构,增删速度很快,但是没有索引,所以查询稍慢。
Vector底层是数组数据结构,线程同步,但是作为JDK1.0的元老,增删很慢,查询也慢,已经被ArrayList替代了。Vector初始容量为10,如果超过,直接增加一倍,对内存消耗比较大。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
ArrayList linkedList Vector因为底层数据结构不同而分
                ArrayList 底层是数组结构类型 特点:查询修改很快。增删较慢
                LinkedList 底层数据结构是链表结构 特点:增删很块。查询较慢
                Vector 底层是数组数据结构,是同步的,查询增删都慢
                数组长度可变是不断new数组产生的
                Vector 是同步的。数组长度不够使用新数组长度100%延长
                ArrayList不是同步的。不够使用新数组长度50%延长.一般用这个效率高,内存省

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马