在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("\r<br>執行耗時 : "+(System.currentTimeMillis()-a)+" 秒 "); long a1=System.currentTimeMillis(); array.test2(); System.out.println("\r<br>執行耗時 : "+(System.currentTimeMillis()-a1)+" 秒 "); } }
結果如下:
<br>執行耗時 : 1 秒
<br>執行耗時 : 0 秒