黑马程序员技术交流社区

标题: ArrayList [打印本页]

作者: IT农民工的日常    时间: 2016-4-11 23:42
标题: ArrayList
ArrayList  LinkedList 具体有什么区别?
作者: xinzhang    时间: 2016-4-12 10:28
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
作者: 年年    时间: 2016-4-12 12:59
ArrayList底层是数组存储,LinkedList单链表存储。ArrayList插入删除元素慢,LinkedList插入删除元素快,适合场景不一样。
作者: 哦哈哟    时间: 2016-4-12 16:26
首先,你要理解List的共性
List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

List集合支持对元素的增、删、改、查。
恰好这些四个功能的效果就是ArrayList跟LinkedList的区别体现

然后他的子类:ArrayList,LinkedList,Vector各自的特点。
ArrayList:底层的数据结构是数组,线程不同步,ArrayList替代了Vector,查询元素的速度非常快。
LinkedList:底层的数据结构是链表,线程不同步,增删元素的速度非常快。
Vector:底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。(这个除了举枚)

数组结构:
元素:O-O-O-O-O-O-O-O
索引:1  2  3  4  5  6  7  8
如上图,当需要查询的时候直接查询下标既可,效率会更快。但是需要在中间添加或删除的话,添加或删除元素后面的索引下标都需要更改。所以效率会很慢。
链表结构:
元素:O-O-O-O-O-O-O
索引:各自元素会记住前后是什么元素作为索引。

作者: 追梦de蜗牛2016    时间: 2016-4-12 17:24
都是list集合类的,只不过底层的实现形式不同,
作者: 15614014298    时间: 2016-4-12 20:04
底层的数据结构不同,应用场景也不同。根据需求来判断来用哪个
作者: lidandan    时间: 2016-4-12 22:13
ArrayList底层数就结构是数组,查询修改快
LinkedList底层数据结构是链表,查询慢,增删快




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