A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

什么时候用ArrayList 什么时候用LinkedList

16 个回复

倒序浏览
首先ArraList和LinkedList 都是有序的 可以重复的 可以存入其他对象(元素)的集合. 只不过LinkedList 可以对元素输出进行先进先出 或者先进后出 是可以控制的,  还有ArraList是数组 他查询快 增删慢  LinkedList 反之, 你自己根据需要选定一个集合使用 看情况.
回复 使用道具 举报 1 0
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集合
回复 使用道具 举报
楼上正解,学习了
回复 使用道具 举报
ArrayList LinkedList 线程均不安全,效率高
ArryList 查询快,增删慢
LinkedList  查询慢,增删快
当需要【查询较多数据】时使用 ArrayList
当需要【删除较多数据】时使用LinkedList
Vector线程安全,效率低。链表结构 现在很少用, 查询快,增删慢
回复 使用道具 举报
这个问题,可以这么解释,arrayList内部是由array实现,LinkedList内部是由链表实现。

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

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

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

O(∩_∩)O谢谢。。。。。。
回复 使用道具 举报
学习了!!!
回复 使用道具 举报
~~不错哟!
回复 使用道具 举报
楼上们都说了。。其实就是看需求。。要增删改还是查询。
回复 使用道具 举报

ArrayList LinkedList 线程均不安全,效率高
ArryList 查询快,增删慢
LinkedList  查询慢,增删快
回复 使用道具 举报
首先要看你所要存的对象(数据)的使用情况,如果查询操作较多,使用ArrayList;如果增、删较多,使用LinkedList。
回复 使用道具 举报
ArrayList底层为数组,在数据结构里,叫做线性表,特点是,查找快,但是删除,插入慢,需要移动数组内部元素
LinkedList底层为链表,链表的特点是,插入删除快,但是查找慢
假如你的数据总需要查找就用ArrayList
你的数据总需要删除,插入,就用LinkedList,基本上都是查找
回复 使用道具 举报
2楼答案正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马