首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ArrayList,LinkedList施用场景及性能说明

2012-08-28 
ArrayList,LinkedList使用场景及性能说明Java面试中关于容器类List,Set是必问题目。但在我的面试经历中很难

ArrayList,LinkedList使用场景及性能说明
   Java面试中关于容器类List,Set是必问题目。但在我的面试经历中很难遇到满意的答复。大部分只能了解其大概使用方法,对其内部结构缺乏了解,错误的使用方式会导致性能大幅下降。
   首先介绍ArrayList,顾名思义内部数据结构是数组

public class LinkedList<E>    extends AbstractSequentialList<E>    implements List<E>, Deque<E>, Cloneable, java.io.Serializable{    private transient Entry<E> header = new Entry<E>(null, null, null);    private transient int size = 0;}private static class Entry<E> {E element;Entry<E> next;Entry<E> previous;}

插入和删除都只要改动前后节点的next和previous实现

总结特点如下:
类型内部结构顺序遍历速度随机遍历速度追加代价插入代价删除代价占用内存ArrayList数组高高中高高低LinkedList双向链表高低低低低中
所以:
一般顺序遍历情况下使用ArrayList,但注意构造函数中设置初始大小尽量不对ArrayList进行插入或删除操作(删除尾部除外),若有多次删除/插入操作又有随机遍历的需求,可以再构建一个ArrayList,把复合条件的对象放入新ArrayList,而不要频繁操作原ArrayList经常有删除/插入操作而顺序遍历列表的情况下最适合使用LinkedList

 

热点排行