Java 对数组的筛选

  在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 秒