java的list和数组谁高效_Java数组和各种List的性能比较

Java数组和各种List的性能比较

以下程序分别对Java数组、ArrayList、LinkedList和Vector进行随机访问和迭代等操作,并比较这种集合的性能。

package cn.lion.test;

public class PerformanceTest {

privatestatic final int SIZE =100000;

publicstatic abstract class Test{

privateString operation;

publicTest(String operation){

this.operation= operation;

}

publicabstract void test(Listlist);

publicString getOperation(){

returnoperation;

}

}

//执行迭代操作的匿名类

staticTest iterateTest = new Test("iterate"){

publicvoid test(Listlist){

for(inti=0; i<10; i++){

Iteratorit = list.iterator();

while(it.hasNext()){

it.next();

}

}

}

};

//执行随机访问的匿名类

staticTest getTest = new Test("get"){

publicvoid test(Listlist){

for(inti=0; ilist){

ListIteratorit = list.listIterator(list.size()/2);

for(inti=0; ilist){

ListIteratorit = list.listIterator();

while(it.hasNext()){

it.next();

it.remove();

}

}

};

staticpublic void testArray(Listlist){

Test[]tests = {iterateTest, getTest};

test(tests,list);

}

staticpublic void testList(Listlist){

Test[]tests = {insertTest, iterateTest, getTest, removeTest};

test(tests,list);

}

staticpublic void test(Test[] tests, Listlist){

for(inti=0; ilist = null;

//测试数组的迭代和随机访问操作

System.out.println("------测试数组------");

String[]tstr = new String[SIZE];

Arrays.fill(tstr,"lion");

list= Arrays.asList(tstr);

testArray(list);

tstr= new String[SIZE/2];

Collectioncoll = Arrays.asList(tstr);

//测试Vector

System.out.println("------测试Vector------");

list= new Vector();

list.addAll(coll);

testList(list);

//测试LinkedList

System.out.println("------测试LinkedList------");

list= new LinkedList();

list.addAll(coll);

testList(list);

//测试ArrayList

System.out.println("------测试Vector------");

list= new ArrayList();

list.addAll(coll);

testList(list);

}

}

程序运行结果如图

a2a18646cdcc106ad75d9ec90381314d.png

从结果可以看出,对数组进行随机访问和迭代操作的速度是最快的;对LinkedList进行插入和删除操作的速度是最快的;对ArrayList进行随机访问的速度也很快;Vector类在各方面没有突出的性能,且此类已不提倡使用了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值