黑马程序员技术交流社区

标题: 插入数据时,ArrayList、LinkedList、Vector谁速度较快? [打印本页]

作者: 胡滨    时间: 2013-4-10 09:03
标题: 插入数据时,ArrayList、LinkedList、Vector谁速度较快?
本帖最后由 胡滨 于 2013-4-10 11:09 编辑

对它们插入数据方法不了解。
作者: 黑马-郑玉元    时间: 2013-4-10 09:08
ArrayList和Vector都是数组实现,但不同的是,Vector是线程安全,加了同步,所以原则上ArrayList比Vector比快;
LinkekList是链表实现,增删快,查找慢,所以你要是插入数据时,显然LinkedList是最快的,其次是ArrayList,再者Vector。
作者: 李大伟    时间: 2013-4-10 09:11
本帖最后由 李大伟 于 2013-4-10 09:19 编辑

ArrayList: 底层数据结构 使用 数组结构 :查询速度很快  但是 增删稍慢  线程不同步
LinkdeList: 底层使用的链表数据结构   特点 增删很快 查询很慢  
Vector: 顶层是数组数据结构。 线程同步 。被ArrayList替代了

所以具体情况具体分析吧,
这个 在毕老师 14章 第6讲  List集合具体对象的特点。
作者: 。。。。。。    时间: 2013-4-10 09:16
插入当然是LinkdeList快。ArrayList查询快,从 Java 2 平台 v1.2 开始,Vector改进为可以实现 List 接口
作者: 赵晓东    时间: 2013-4-10 09:37
LinkdeList插入删除元素稍快,因为LinkdeList底层使用的是链表数据结构,所谓链表数据结构就是当前元素只和他的前一元素和后一元素有关联,就像一串珠子一样。添加操作时只要把目的位置的前一元素和后一元素关联到要添加元素上即可。删除元素时只要把要删除元素的前一元素和后一元素的关联断掉即可,垃圾回收器会自动回收删除的元素。这种接链和断链的操作就是链表的添加和删除操作,这样就避免了ArrayList的数组数据结构添加操作元素时大量移动数据的操作。因为LinkedList的是链表数据结构,所以它查询时要根据元素的关联一个一个的查询,不像数组那样操作角标就可以查询到,所以LinkedList的查询速度稍慢
作者: 李永康    时间: 2013-4-10 10:23
要想知道他们的速度,首先要了解的是他们的底层数据结构。
ArrayList-->数组
LinkedList-->链表
所谓链表, 就是  比如说你知道你同学家的地址,通过地址找你同学。
其实 在我们运用中  两个都差不多,只是说 查询多 用ArrayList    数据操作多使用LikedList。
自己知道 想要解释怎么就这么难呢
作者: 朱德帅    时间: 2013-4-10 10:52
当然是LinkedList快!ArrayList和Vector的底层都是用数组实现的,而LinkedList是用链表实现的。数组实现的特点是查找快,增删慢。而链表的特点是查找慢,增删快。因为数组实现的,查找的时候直接通过数组角标就可以找到。但是增删元素时,需要挪动元素,平均需要挪动数组长度一般的元素。链表实现,元素之间联系是通过相邻之间的地址联系的。所以查找的时候,需要从头开始找。但是删除元素时,不需要移动元素。只要修改被删除元素前后的指针即可。
作者: 胡滨    时间: 2013-4-10 11:07
黑马-郑玉元 发表于 2013-4-10 09:08
ArrayList和Vector都是数组实现,但不同的是,Vector是线程安全,加了同步,所以原则上ArrayList比Vector比 ...

:handshake多谢
作者: 胡滨    时间: 2013-4-10 11:07
李大伟 发表于 2013-4-10 09:11
ArrayList: 底层数据结构 使用 数组结构 :查询速度很快  但是 增删稍慢  线程不同步
LinkdeList: 底层使用 ...

:handshake多谢
作者: 胡滨    时间: 2013-4-10 11:08
。。。。。。 发表于 2013-4-10 09:16
插入当然是LinkdeList快。ArrayList查询快,从 Java 2 平台 v1.2 开始,Vector改进为可以实现 List 接口 ...

:handshake多谢
作者: 胡滨    时间: 2013-4-10 11:08
赵晓东 发表于 2013-4-10 09:37
LinkdeList插入删除元素稍快,因为LinkdeList底层使用的是链表数据结构,所谓链表数据结构就是当前元素只和 ...

:handshake多谢
作者: 胡滨    时间: 2013-4-10 11:08
李永康 发表于 2013-4-10 10:23
要想知道他们的速度,首先要了解的是他们的底层数据结构。
ArrayList-->数组
LinkedList-->链表

:handshake多谢
作者: 胡滨    时间: 2013-4-10 11:08
朱德帅 发表于 2013-4-10 10:52
当然是LinkedList快!ArrayList和Vector的底层都是用数组实现的,而LinkedList是用链表实现的。数组实现的 ...

:handshake多谢




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