• <th id="ltxwt"></th>

      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);
        
       }
        
       }

      天堂网