java list.get(i) 效率_Java中List效率的比较

Java Collections Framework(JCF) 是Java

SE中一个基本的类集,几乎所有的项目都会用到,其中的List 则是JCF中最最常用的一个接口。围绕List

接口,有很多实现,诸如常用的ArrayList 、LinkedList 、Vector 、Stack

,还有Java5之后引入的CopyOnWriteArrayList ,也有不少List 的开源实现,如Apache

commons-collections中的各类List

这么多的List 实现,如何选择?他们的运行效率具体怎样?本篇文章将用具体的代码来检测其中最最常用的一些List

实现

主要测试对象:

java.util.ArrayList;

java.util.LinkedList;

java.util.Stack;

java.util.Vector;

java.util.concurrent.CopyOnWriteArrayList;

org.apache.commons.collections.FastArrayList;

org.apache.commons.collections.list.TreeList;

测试用例:

1.测试List

1.1顺序添加

1.2随机插入

1.3随机删除

1.4随机访问

1.5随机更新

1.5顺序迭代

1.6for顺序迭代

2.测试List 在三种情况下的排序效率

2.1初始时List 中元素已从小到大有序排列(最优情况)

2.2初始时List 中元素已从大到小有序排列(最差情况)

2.3初始时List 中元素随机排列,无序

3.测试List 互相转换的效率

3.1转化为TreeList

3.2转化为ArrayList

3.3转化为LinkedList

3.4转化为CopyOnWriteArrayList

3.5转化为Vector

测试代码:

package tv.lehe;

import static

java.lang.System.out; import

java.util.ArrayList; import

java.util.Collections; import

java.util.Iterator; import

java.util.LinkedList; import java.util.List; import java.util.Stack; import java.util.Vector; import

java.util.concurrent.CopyOnWriteArrayList; import

org.apache.commons.collections.FastArrayList; import

org.apache.commons.collections.list.TreeList; import

org.apache.commons.lang.StringUtils; import

org.apache.commons.lang.time.StopWatch; @SuppressWarnings("unchecked") public class ListPerformance

{ public

static void main(String[] args)

{ ListPerformance test = new ListPerformance(10 *

10000); out.print(StringUtils.center("Test List Performance: loop=" +

test.loop, 80, '-')); out.printf("\n ssssssss", "", "add", "insert", "remove", "get",

"set", "iterator","for"); test.benchmark(new

FastArrayList()); test.benchmark(new

TreeList()); test.benchmark(new

ArrayList()); test.benchmark(new

LinkedList()); test.benchmark(new

CopyOnWriteArrayList()); test.benchmark(new

Vector()); test.benchmark(new

Stack()); //2.测试排序 out.print("\n\n"); out.print(StringUtils.center("Test List sort Performance: loop=" +

test.loop, 80, '-')); out.printf("\n ssss", "", "optimize", "worst",

"random"); test.benchmarkSort(new

FastArrayList()); test.benchmarkSort(new

TreeList()); test.benchmarkSort(new

ArrayList()); test.benchmarkSort(new

LinkedList()); //test.benchmarkSort(new

CopyOnWriteArrayList());//UnsupportedOperationException test.benchmarkSort(new

Vector()); test.benchmarkSort(new

Stack());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值