• 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(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类在各方面没有突出的性能,且此类已不提倡使用了。

     

  • 相关阅读:
    dajngo 访问静态资源 图片
    springboot Shiro
    Jmeter集合点(线程组和同步定时器)
    Jmeter中的线程租的参数讲解
    人工智能必备数学知识学习笔记9:初等矩阵和矩阵的可逆性
    人工智能必备数学知识学习笔记8:线性系统
    在 web 中 后台 推送消息 页面 的消息提醒 注意
    web页面实现文件下载的几种方式
    ant desgin pro 的表格组件中的 使用 之自动刷新
    ant desgin 项目中 弹框modlel 模态框中展示 form 表单 将 form 表单 的提交按钮 关联到 模态框的 确定按钮上 在hook的写法中 在 class 的组件中 要加上 this
  • 原文地址:https://www.cnblogs.com/vijozsoft/p/5813693.html
Copyright © 2020-2023  润新知