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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李爱霞 黑马帝   /  2011-12-30 12:17  /  2278 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李爱霞 于 2011-12-30 13:49 编辑

谁能总结一下关于ArrayList,Vector, LinkedList的存储性能和特性

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

4 个回复

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

     LinkedList也是线程不安全的,LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
ArrayList与Vector都是基于数组实现的,这就说明ArrayList与Vector适合做遍历而不适合做频繁的插入和删除。
* vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。

* 如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.
* 如过在集合中使用数据量比较大的数据,用vector有一定的优势
* LinkedList是基于链表实现的,所以它生来就是为了频繁插入与删除对象。

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
谢谢大家的关照。。。
回复 使用道具 举报
付星 黑马帝 2011-12-30 17:21:56
报纸
都是集合框架类,都继承自List接口
Vector和ArrayList用上去没什么区别,但现在一般不建议用Vector是线程安全,ArrayList是线程不安全的,从性能来说ArrayList都要快
LinkedList和ArrayList区别很大,它们内部实现完全不同,ArrayList底层用数组扩展,LinkedList是双向的数据链表结构,在项目中一般ArrayList用得最多,因为ArrayList查找添加快,而LinkedList好的地方是修改性能要快,在对数据很少修改时建议用ArrayList

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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