黑马程序员技术交流社区

标题: ArrayList,Vector, LinkedList的存储性能 [打印本页]

作者: 高顺德    时间: 2013-3-26 16:48
标题: ArrayList,Vector, LinkedList的存储性能

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

作者: 王军行    时间: 2013-3-26 17:18
ArrayList linkedList Vector因为底层数据结构不同而分
                ArrayList 底层是数组结构类型 特点:查询修改很快。增删较慢
                LinkedList 底层数据结构是链表结构 特点:增删很块。查询较慢
                Vector 底层是数组数据结构,是同步的,查询增删都慢
                数组长度可变是不断new数组产生的
                Vector 是同步的。数组长度不够使用新数组长度100%延长
                ArrayList不是同步的。不够使用新数组长度50%延长.一般用这个效率高,内存省
作者: 我是小白    时间: 2013-3-26 17:19
ArrayList底层的数据结构使用的数组结构(级存储数据的方式),特点在于有索引查询速度很快,但是增删稍慢。线程不同步。ArrayList初始容量为10,如果超过增加一半。
LinkList底层的数据结构使用的双向链表结构,增删速度很快,但是没有索引,所以查询稍慢。
Vector底层是数组数据结构,线程同步,但是作为JDK1.0的元老,增删很慢,查询也慢,已经被ArrayList替代了。Vector初始容量为10,如果超过,直接增加一倍,对内存消耗比较大。
作者: HM周一帆    时间: 2013-3-26 17:20
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。


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




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