黑马程序员技术交流社区

标题: 新手--关于ArrayList,Vector, LinkedList [打印本页]

作者: 李爱霞    时间: 2011-12-30 12:17
标题: 新手--关于ArrayList,Vector, LinkedList
本帖最后由 李爱霞 于 2011-12-30 13:49 编辑

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

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

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


作者: 阮金明    时间: 2011-12-30 12:26
ArrayList与Vector都是基于数组实现的,这就说明ArrayList与Vector适合做遍历而不适合做频繁的插入和删除。
* vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。

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


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




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