关于遍历,发现了个坑。 详见如下:
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 + " 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 + " use Time:"+(System.currentTimeMillis()-start)/1000); } }
运行结果:
看,是不是很6,按理来说,一边遍历一边删除会少遍历一些,速度会快一些,but。。。。。。