黑马程序员技术交流社区

标题: 一道面试题 ArrayList,Vector, LinkedList的存储性能和特性 [打印本页]

作者: 张强+    时间: 2011-10-29 13:39
标题: 一道面试题 ArrayList,Vector, LinkedList的存储性能和特性
ArrayList,Vector, LinkedList的存储性能和特性
作者: olkldksl    时间: 2011-10-29 13:46
都是集合框架
ArrayList和Vector底层实现的是数组结构;LinkedList底层实现是链表结构。当查找操作比较多的时候(因为有索引),用前者比较好;当增删操作比较多的时候,用后者较好
Vector功能和ArrayList基本相同,但是Vector是较老版本的,线程安全的,较非线程安全的Arraylist效率低。
作者: o火o把o    时间: 2011-10-29 13:59
. ArrayList与Vector都是基于数组实现的,这就说明ArrayList与Vector适合做遍历而不适合做频繁的插入和删除。
. vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。
. 如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.
. 如过在集合中使用数据量比较大的数据,用vector有一定的优势
. LinkedList是基于链表实现的,所以它生来就是为了频繁插入与删除对象。
作者: 骚灵小情歌    时间: 2011-10-29 18:54
上面两楼好像回答的很专业的样子- - 自己不能顺口就出 ...视频白看了.....
作者: 高美云    时间: 2011-10-31 12:34
我的理解:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
作者: 李龙龙    时间: 2011-10-31 21:47
ArrayList,Vector底层数据结构为数组,而 LinkedList底层数据结构为链表,ArrayList,Vector集合类有角标,有自己特有的方法,例如ArrayList中的迭代器ListIterator是特有的,除了Iterator的方法,还有修改,增加方法。三者的存储特点,上面朋友已经总结了,在这里加些。谢谢
作者: 田忠    时间: 2011-10-31 22:18
{:soso_e179:}




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