• java 中,循環刪除list中的多個元素實現

    2016-08-16
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;


    /**
     * 刪除一個list中的其中幾個元素的操作
     *
     */
    public class RemoveTest {
     
     
     /**
      *得到要用來進行演示的數據 
      * @return
      */
     public static List<Integer> initData(){
       List<Integer> datas = new ArrayList<Integer>();
       Integer data = null;
       for(int i=1;i<=10;i++){
        data = new Integer(i);
        datas.add(data);
         
       }
       
      return datas;
     }
     
     
     
     public static void main(String[] args) {
      int[] indexArr = new int[]{1,9,2,5};  
      //定義要刪除list中集合的下標組合,一般在真正項目中,這個數組都是有程序執行得到,一般都是排序正常的
      //這里為了演示如何對數組進行排序,所以打亂了順序
      
      Arrays.sort(indexArr); //調用Arrays這個類的靜態方法sort對數組進行排序,排序結果為正序
      for(Integer index : indexArr){
       System.out.println(index);
      }
      
      List<Integer> datas = initData(); //得到測試數據
      
      //因為要刪除list里面的多個的值,所以會涉及到一個問題,就是當你刪除掉下標為1的元素十,
      //原來下標為2的元素會自動改變自己的下標為0,后面的元素依次把自己的下標值減一
      
      //鑒于這種情況,我們想循環刪除list中的多個元素的話,就必須從后往前刪,這樣保障了你刪除了一個元素之后,
      //list中元素的下標移動不會影響到那些需要刪除,但是還未刪除到的元素   
       System.out.println("刪除前:  "+datas);
        
      for(int i=indexArr.length-1;i>=0;i--){ //倒序
        if(i<=datas.size()){
         System.out.println("刪除了第  "+(indexArr[i]+1)+" 個元素");
        datas.remove(indexArr[i]);
         } 
       }
      
       System.out.println("刪除后:  "+datas);
      
     }
      
     }

    天堂网