当前位置: 移动技术网 > IT编程>开发语言>Java > 比较Java数组和各种List的性能小结

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

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<string> list);
     publicstring getoperation(){
       returnoperation;
     }
   }
   //执行迭代操作的匿名类
   statictest iteratetest = new test("iterate"){
     publicvoid test(list<string> list){
       for(inti=0; i<10; i++){
          iterator<string>it = list.iterator();
          while(it.hasnext()){
            it.next();
          }
       }
     }
   };
   //执行随机访问的匿名类
   statictest gettest = new test("get"){
     publicvoid test(list<string> list){
       for(inti=0; i<list.size(); i++){
          for(intk=0; k<10; k++){
            list.get(k);
          }
       }
     }
   };
   //执行插入的匿名类
   statictest inserttest = new test("insert"){
     publicvoid test(list<string> list){
       listiterator<string>it = list.listiterator(list.size()/2);
       for(inti=0; i<size; i++){
          it.add("lion");
       }
     }
   };
   //执行删除的匿名类
   statictest removetest = new test("remove"){
     publicvoid test(list<string> list){
       listiterator<string>it = list.listiterator();
       while(it.hasnext()){
          it.next();
          it.remove();
       }
     }
   };
   staticpublic void testarray(list<string> list){
     test[]tests = {iteratetest, gettest};
     test(tests,list);
   }
   staticpublic void testlist(list<string> list){
     test[]tests = {inserttest, iteratetest, gettest, removetest};
     test(tests,list);
   }
   staticpublic void test(test[] tests, list<string> list){
     for(inti=0; i<tests.length; 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){
     
     list<string>list = null;
     //测试数组的迭代和随机访问操作
     system.out.println("------测试数组------");
     string[]tstr = new string[size];
     arrays.fill(tstr,"lion");
     list= arrays.aslist(tstr);
     testarray(list);
     
     tstr= new string[size/2];
     collection<string>coll = arrays.aslist(tstr);
     
     //测试vector
     system.out.println("------测试vector------");
     list= new vector<string>();
     list.addall(coll);
     testlist(list);
     
     //测试linkedlist
     system.out.println("------测试linkedlist------");
     list= new linkedlist<string>();
     list.addall(coll);
     testlist(list);
     
     //测试arraylist
     system.out.println("------测试vector------");
     list= new arraylist<string>();
     list.addall(coll);
     testlist(list);
   }
}

运行结果如图

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

总结

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网