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

ArrayList跟LinkedList的操作性能对比

2013-03-21 
ArrayList和LinkedList的操作性能对比ArrayList和LinkedList都是实现了Collection和List接口,继承Abstract

ArrayList和LinkedList的操作性能对比

ArrayList和LinkedList都是实现了Collection和List接口,继承AbstractList的链表。

ArrayList

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于Vector 类,除了此类是不同步的。)

LinkedList::

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾getremoveinsert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque)。

下面就根据几个示例才测试一下它们之间使用的性能区别:

    我们创建一个成员变量List list;在不同的testcase中分别实例化为ArrayList和LinkedList,然后往各个列表中添加100000条数据,根据操作前后的时间差来判断他们的插入性能;
    我们创建一个成员变量List list;在不同的testcase中分别实例化为ArrayList和LinkedList,然后往各个列表中添加100000条数据。然后遍历这些集合,根据操作前后的时间差来判断他们的插入性能;


    再看看Junit控制台的显示情况:
    ArrayList跟LinkedList的操作性能对比我们分别在两个方法里定义一个ArrayList和LinkedList,分别往每个集合中插入100000条数据。ArrayList使用add(object)方法来插入,而LinkedList则使用独自的addFirst(object)和addLast(object)来进行收尾同时插入。

由以上测试结果可以看出:

ArrayList在遍历和普通插入(add(object))的性能上都优于LinkedList。但是LinkedList在首尾进行操作的性能上明显优于ArrayList.


并且,ArrayList和LinkedList的操作方法都不是同步的,在并发操作时,不能保证其合理性,在创建的时候可以保证外部同步:

List arrayList = Collections.synchronizedList(new ArrayList(...));List linkedList = Collections.synchronizedList(new LinkedList(...));

热点排行