黑马程序员技术交流社区

标题: 什么时候用ArrayList 什么时候用LinkedList [打印本页]

作者: 乔栋    时间: 2015-6-21 22:00
标题: 什么时候用ArrayList 什么时候用LinkedList
什么时候用ArrayList 什么时候用LinkedList

作者: ARD    时间: 2015-6-21 23:23
首先ArraList和LinkedList 都是有序的 可以重复的 可以存入其他对象(元素)的集合. 只不过LinkedList 可以对元素输出进行先进先出 或者先进后出 是可以控制的,  还有ArraList是数组 他查询快 增删慢  LinkedList 反之, 你自己根据需要选定一个集合使用 看情况.
作者: liu100chao    时间: 2015-6-21 23:25
Collection接口中有两个常用的子接口:List(列表),Set(集)。
List:可存放重复元素,元素存取是有序的。
                 ArrayList:底层为数组结构。查询速度快。增删稍慢。线程不同步。
                 LinkedList:底层为链表结构。增删速度快,查询稍慢。线程不同步
                 Vector:底层为数组结构。线程同步。被ArrayList替代了。因为效率低。

Set:不可以存放重复元素,元素存取是无序的
                HashSet:数据结构是哈希表。线程不同步。hashCode和equals
                TreeSet:可以对Set集合中的元素进行排序,数据结构为二叉树
                                实现Comparable接口,覆盖compareTo(Object obj)方法
                                实现Comparator接口,覆盖compare(Object o1,Object o2)方法
Map:存储键值对,键不可以重复,值可以重复。
                取出map集合元素的两种方式方法keySet()和entrySet()
                Hashtable: 数据结构为哈希表,不可以存入null键null值,线程同步。
                HashMap:数据结构为哈希表,允许使用 null 值和 null 键,线程不同步。
                TreeMap:数据结构为二叉树。线程不同步。
                                用于给map集合中的键进行排序(排序方法和TreeSet一样,实现comparable和comparator两个接口即可)。
注:其实Set底层就是使用了Map集合

作者: bingyu    时间: 2015-6-21 23:37
楼上正解,学习了
作者: MissMr.    时间: 2015-6-21 23:42
ArrayList LinkedList 线程均不安全,效率高
ArryList 查询快,增删慢
LinkedList  查询慢,增删快
当需要【查询较多数据】时使用 ArrayList
当需要【删除较多数据】时使用LinkedList
Vector线程安全,效率低。链表结构 现在很少用, 查询快,增删慢

作者: micro_hx    时间: 2015-6-21 23:46
这个问题,可以这么解释,arrayList内部是由array实现,LinkedList内部是由链表实现。

那么array最擅长什么,是修改,但是不擅长删除(因为你得将数据向前移动),插入

而链表最擅长的是数据的插入,删除,遍历。。。但是数据修改却存在时间问题。。。

所以具体的业务看你自己的选择了。。。
作者: zlpiano    时间: 2015-6-21 23:48
简单来说,增删插入等操作多,就用linklist,因为链式结构增删方便,只要修改指针就行了,查找操作较多时就用arraylist,因为arraylist是数组结构,在内存中地址是连续的,查找效率较高
作者: JJJD    时间: 2015-6-22 00:20
大家的总结好实用哦!
作者: qian0217wei    时间: 2015-6-22 00:30
ArrayList底层是数组,LinkedList集合底层是链表,想想两者的区别,方法很容易就出来了!
作者: 乔栋    时间: 2015-6-22 19:45
ARD 发表于 2015-6-21 23:23
首先ArraList和LinkedList 都是有序的 可以重复的 可以存入其他对象(元素)的集合. 只不过LinkedList 可以对 ...

O(∩_∩)O谢谢。。。。。。
作者: a1224577182    时间: 2015-6-22 21:02
学习了!!!
作者: 冷雨敲窗被未温    时间: 2015-6-22 21:52
~~不错哟!
作者: 安安安    时间: 2015-6-22 22:03
楼上们都说了。。其实就是看需求。。要增删改还是查询。
作者: Baymaxman    时间: 2015-6-22 22:11

ArrayList LinkedList 线程均不安全,效率高
ArryList 查询快,增删慢
LinkedList  查询慢,增删快
作者: 池中月    时间: 2015-6-26 16:23
首先要看你所要存的对象(数据)的使用情况,如果查询操作较多,使用ArrayList;如果增、删较多,使用LinkedList。
作者: qxc1281    时间: 2015-6-26 19:22
ArrayList底层为数组,在数据结构里,叫做线性表,特点是,查找快,但是删除,插入慢,需要移动数组内部元素
LinkedList底层为链表,链表的特点是,插入删除快,但是查找慢
假如你的数据总需要查找就用ArrayList
你的数据总需要删除,插入,就用LinkedList,基本上都是查找

作者: 1千克=1024克    时间: 2015-6-26 22:12
2楼答案正解




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