希望十年后,我们都能活成我们喜欢的样子

导航

 

关于遍历,发现了个坑。 详见如下:

package com.fxl.test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestLoop {
    
    
    public static void main(String[] args) {
        List<String> list = new ArrayList();
        for(int i=0;i<10000*100;i++){
            list.add("test"+i);
        }
        test1(list);
        test2(list);
    }
    public static void test1(List<String> list){
        long start = System.currentTimeMillis();
        long num = 0l;
        for(String str : list){
            num += Long.parseLong(str.replace("test", ""));
        }
        System.out.println("result:"+num + "\n use Time:"+(System.currentTimeMillis()-start)/1000);
    }
    
    public static void test2(List<String> list){
        long start = System.currentTimeMillis();
        long num = 0l;
        /*for(Iterator<String> it=list.iterator(); it.hasNext();){
            num += Long.parseLong(it.next().replace("test", ""));
            it.remove();
        }*/
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String str = it.next();
            num += Long.parseLong(str.replace("test", ""));
            it.remove();
        }
        
        System.out.println("result:"+num + "\n use Time:"+(System.currentTimeMillis()-start)/1000);
    }
    
}

运行结果:

  

看,是不是很6,按理来说,一边遍历一边删除会少遍历一些,速度会快一些,but。。。。。。

 

posted on 2018-11-08 15:44  王凯的影迷朋友  阅读(104)  评论(0编辑  收藏  举报