黑马程序员技术交流社区

标题: ArrayList和LinkedList [打印本页]

作者: liubea    时间: 2014-7-28 13:52
标题: ArrayList和LinkedList
本帖最后由 liubea 于 2014-8-8 00:33 编辑

想知道ArrayList和LinkedList的区别和各自的应用场合,希望大家得到大家的指教。
作者: 蔡爽    时间: 2014-7-28 13:57
ArryList 与linkedList 都实现了List 接口。
ArryList实现list 集合采用数组结构保存对象,数组结构的优点是便于对集合进行快速的随机访问,如果经常需要根据索引位置访问集合中的对象,由ArryList来实现List集合的效率较好。如果经常需要向List集合的指定位置插入对象或者删除List集合的指定索引位置的对象,使用ArryList的效率一般要低于LinkedList,且插入或删除的对象的索引位置越小效率越低,原因是因为当指定位置索引插入对象时,会同时将此索引位置之后的所有对象相应的向后移动一位。删除会同时向前移动一位。

LinkedList实现List接口采用链表结构保存对象。链表结构优点是便于向集合插入和删除对象。那么经常向集合中插入对象或者删除对象,应用LinkedList的效率较高。但是LinkedList随机访问对象的效率要低于ArryList。以上问题是因为链表结构在插入对象时只需要简单的需该链接位置,省去了移动对象的操作。在查询上LinkedList只能从链表的一端移动到另一端故效率较低。



总结一下ArryList与LinkedList的优缺点
1、ArryList 与LinkedList在列表末尾增加或者删除对象所花的开销是固定的。
2、ArryList内部插入或删除列表中此索引以后的对象都会被移动,效率低
LinkedList在内部插入或者删除对象所花的开销是固定的,效率高。
3、LinkedList不支持高效的随机访问元素。
由此可见如果只是在列表的末尾添加元素,并且还需要经常随机访问对象,那么应用ArryList将会得到更好的效率。如果需要经常列表内部增加元素,并要顺序访问元素那么LinkedList的能提供更好的效率。
作者: liubea    时间: 2014-7-29 11:58
蔡爽 发表于 2014-7-28 13:57
ArryList 与linkedList 都实现了List 接口。
ArryList实现list 集合采用数组结构保存对象,数组结构的优点 ...

长知识了,谢谢。




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