在Java里面 一般对一个数组进行筛选,去剔除一些元素,一般做法是用临时数组来存储,把符合条件的元素加入到新数组中,虽然数组有移除的方法但是 是线程不安全的;
而用迭代器Iterator,可以在遍历的情况下可以进行元素移除,原因是它是线程安全的,效率相对好点。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Array { public void test1(){ List<Integer> list = new ArrayList<>(); for(int i =0 ;i<100;i++){ list.add(i); } List<Integer> list1 = new ArrayList<>(); for(Integer item : list){ if(item>2){ list1.add(item); } } } public void test2(){ List<Integer> list = new ArrayList<>(); for(int i =0 ;i<100;i++){ list.add(i); } Iterator<Integer> iter = list.iterator(); while(iter.hasNext()){ if(iter.next()<=2){ iter.remove(); } } } public static void main(String args[]){ Array array = new Array(); long a=System.currentTimeMillis(); array.test1(); System.out.println(" <br>执行耗时 : "+(System.currentTimeMillis()-a)+" 秒 "); long a1=System.currentTimeMillis(); array.test2(); System.out.println(" <br>执行耗时 : "+(System.currentTimeMillis()-a1)+" 秒 "); } }
结果如下:
<br>执行耗时 : 1 秒
<br>执行耗时 : 0 秒