黑马程序员技术交流社区
标题:
什么时候用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