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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tanshion 中级黑马   /  2014-6-10 21:55  /  1609 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 tanshion 于 2014-6-12 00:03 编辑

我想知道在元素插入方面,LinkedList究竟比ArrayList有什么优势???

12 个回复

倒序浏览
LinkedList和ArrayList储存元素的方式不一样ArrayList中的元素默认的带有角标,比如说ArrayList集合中有100个元素,如果要在第二角标位置插入元素,那么该元素之后的所有元素的角标都需要加1,因此效率会低很多
回复 使用道具 举报 1 0
LinkedList他的底层是链表结构,所以他的特点是增删快,查找慢,这和ArrayList的特点正好相反,所以元素插入实际上就是增加元素,所以用LinkedList而非ArrayList

点评

谢谢!学习了  发表于 2014-6-11 01:21
回复 使用道具 举报 1 0
学习了啊
回复 使用道具 举报
LinkedList他的底层是链表结构,所以他的特点是增删快,查找慢,ArrayList的底层是数组,按角标查询,所以速度比较快,添加和删除慢
回复 使用道具 举报
学习了,表示不是太清楚
回复 使用道具 举报
塔罗 中级黑马 2014-6-11 00:15:08
7#
都说了。说的很详细
回复 使用道具 举报
谢谢大家了
回复 使用道具 举报
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引  但是缺点就是查找非常麻烦 要丛第一个索引开始
回复 使用道具 举报
上面说的很清楚呢
回复 使用道具 举报
本帖最后由 黑子 于 2014-6-11 22:49 编辑

LinkedList底层数据结果是链表结构,对象与对象之间有地址指针间的联系,插入、删除只要改变指针就可了,不用改变底层的数组。
ArrayList底层是线性表中的顺序结构,对象与对象之间是一个接着一个的,插入或是删除都要遍历移动对象,开销大,速度慢。但是查询速度快,
LinkedList查询慢,增删快!
回复 使用道具 举报

我自己总结了一下:
结合有6个接口和8个实现类,基本特点如下:
6个接口特点:
Collection:定义了存取一组对象的方法,子接口Set和List分别定义了存储方式。
Set:元素没有次序,但是不允许重复。
SortedSet:和Set相同,但是按照升序排列的。
List : 元素加载和移除是按照顺序,允许重复。
Map:以键值对的形式存储,值可以重复,但是键是不允许重复的,无存放顺序。
SortMap:和Map相同,但是集合中的元素按照他们的键值对的升序排列。
8个实现类的特性:
LinkList:删除快,查找慢,故多用于插入和删除。
ArrayList:效率高,不直接支持并发,多用于查询。
Vectory:效率低,线程安全,直接支持并发操作,多用于、查询(先被ArrayList取代)。
TreeSet:存储效率高,查找效率低。
HashSet:存储效率高,查找效率低。
HashMap:元素以键值对的形式保存。效率搞,不支持并行,但是允许空值。
HashTabel:元素以键值对方式保存,线程安全,不允许空制(Key,Value都不允许为空)。
TreeMap:元素以键值对方式保存,不支持并行,不允许空制(Key,Value都不允许为空)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马