2013-03-13 34 views
1

問:刪除存儲在列表中的某些元素,其索引存在於其他列表中?例如。 列表1有a,b,c,d,e,列表2有0,2,那麼應刪除a和c。使用其他列表中存在的索引刪除存儲在列表中的某些元素

我做的這個實現,不知道如何efficent \在-efficent這是

public class RemoveByIndexFromOtherList { 

    public static void main(String[] args) { 
     List<String> lOriginal = new ArrayList<String>(); 
     lOriginal.add("a"); 
     lOriginal.add("b"); 
     lOriginal.add("c"); 
     lOriginal.add("d"); 
     lOriginal.add("e"); 

     List<Integer> indexes = new ArrayList<Integer>(); 
     indexes.add(0); 
     indexes.add(2); 
     List<String> elemToRemove = new ArrayList<String>(); 

     for (Integer index : indexes) { 
      String b = lOriginal.get(index.intValue()); 
      elemToRemove.add(b); 
     } 

     for (String s : lOriginal) { 
      if (elemToRemove.contains(s)) {} 
      else { 
       System.out.println(s); 
      } 
     } 
    } 
} 

請建議,這可怎麼提高到一個公平良好的效率水平

+0

我不認爲這是一個比存儲要刪除的元素和事後刪除它們 – yaens 2013-03-13 23:26:20

回答

0

如果沒有把握你仍然需要一個答案/建議。

除了刪除,您可以創建一個新列表並添加第二個列表中不存在的索引。然後只需更改參考。在你的情況下,如果你在列表中有多個「a」,它們都將被刪除。

建議:

import java.util.ArrayList; 
import java.util.List; 

public class RemoveByIndexFromOtherList { 

    public static void main(String[] args) { 
     List<String> lOriginal = new ArrayList<String>(); 
     lOriginal.add("a"); 
     lOriginal.add("b"); 
     lOriginal.add("c"); 
     lOriginal.add("d"); 
     lOriginal.add("e"); 
     lOriginal.add("a"); 

     List<Integer> indexes = new ArrayList<Integer>(); 
     indexes.add(0); 
     indexes.add(2); 

     List<String> newListOriginal = new ArrayList<String>(); 

     for(int i = 0; i<lOriginal.size(); i++){ 
      if(!indexes.contains(i)){ 
       newListOriginal.add(lOriginal.get(i)); 
      }   
     } 
     lOriginal = newListOriginal; 

     for(String str: lOriginal){ 
      System.out.println(str); 
     } 

    } 
} 
相關問題