java数组和list_比较Java数组和各种List的性能小结

本文详细分析了Java中对数组、List(包括LinkedList、ArrayList)和Vector类执行迭代、随机访问、插入和删除操作的性能测试结果,揭示了不同数据结构在操作效率上的差异,适合学习者了解Java数据结构性能优化。
摘要由CSDN通过智能技术生成

话不多说,直接看示例代码

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(List list);

publicString getOperation(){

returnoperation;

}

}

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

staticTest iterateTest = new Test("iterate"){

publicvoid test(List list){

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

Iteratorit = list.iterator();

while(it.hasNext()){

it.next();

}

}

}

};

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

staticTest getTest = new Test("get"){

publicvoid test(List list){

for(inti=0; i

for(intk=0; k<10; k++){

list.get(k);

}

}

}

};

//执行插入的匿名类

staticTest insertTest = new Test("insert"){

publicvoid test(List list){

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

for(inti=0; i

it.add("lion");

}

}

};

//执行删除的匿名类

staticTest removeTest = new Test("remove"){

publicvoid test(List list){

ListIteratorit = list.listIterator();

while(it.hasNext()){

it.next();

it.remove();

}

}

};

staticpublic void testArray(List list){

Test[]tests = {iterateTest, getTest};

test(tests,list);

}

staticpublic void testList(List list){

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

test(tests,list);

}

staticpublic void test(Test[] tests, List list){

for(inti=0; i

System.out.print(tests[i].getOperation()+ "操作:");

longt1 = System.currentTimeMillis();

tests[i].test(list);

longt2 = System.currentTimeMillis();

System.out.print(t2-t1+ "ms");

System.out.println();

}

}

publicstatic void main(String[] args){

Listlist = 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);

}

}

运行结果如图

a4659012d38dcfb09e55ec13d7fdbceb.png

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

总结

以上就是本文的全部内容,希望对大家学习或者使用Java能有所帮助。如果有疑问可以留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值