2014-12-04 102 views
0

我有一個包含三個元素的列表,但是當我迭代時,我只刪除一個元素並移動已刪除元素的位置。列表中的其他元素在替換列表中其他元素的索引時不顯示

在,那時沒有被顯示僅顯示移除的元素的其他元素..

我下面提供我的代碼。

請給我提供一些解決方案。

public class ListRemove { 
    public static void main(String []args){ 
     int i =0; 

    List<String> lst = new ArrayList<String>(); 
    lst.add("Cat"); 
    lst.add("Dog"); 
    lst.add("Rat"); 

    Iterator<String> iterate = lst.iterator(); 
    while(iterate.hasNext()){ 
     String str = iterate.next(); 
     if(str.equalsIgnoreCase("Dog")){ 
      iterate.remove(); 
      lst.set(0, str); 
      System.out.println(str); 
     } 
    } 

} 

}

O/P: 狗

預計:狗,貓,鼠

+0

你不應該當你通過它迭代改變的容器。它搞砸了東西。 – khelwood 2014-12-04 11:41:41

回答

0

爲什麼你只得到了狗作爲輸出的第一件事,是因爲你有你的System.out.println(str);聲明裏面if塊只有在有元件時才運行。對於其他元素,它不會打印任何東西。第二件事,如果你想讓你的輸出成爲Dog,Cat,Rat,那麼你不會通過使用lst.set(0, str);得到它,因爲set方法會替換位置0處的元素。所以你的Cat元素將被Dog替換。所以你不會在你的輸出中得到Cat。

For Info about set method

編輯:

嘗試用盡管set()add()方法。

while(iterate.hasNext()){ 
    String str = iterate.next(); 
    if(str.equalsIgnoreCase("Dog")){ 
     iterate.remove(); 
     lst.add(0, str); 
    } 
} 
+0

發現它很有用 – Karthik 2014-12-04 12:14:39

+0

@Karthik檢查我的編輯。 – gprathour 2014-12-04 12:17:25

0
public class ListRemove { 
public static void main(String[] args) { 

    int swapPosition = 0; 

    List<String> lst = new ArrayList<String>(); 
    lst.add("Cat"); 
    lst.add("Dog"); 
    lst.add("Rat"); 

    for(int i=0;i<lst.size();i++){ 
     if(lst.get(i).equalsIgnoreCase("Dog")){ 
      swapPosition = i; 
     } 
    } 

    Collections.swap(lst, 0, swapPosition); 
    System.out.println("Results after swap operation:"); 
    for(String str: lst){ 
     System.out.println(str); 
    } 

} 
} 
+0

代替System.out.println(item),它以Dog and Rat的形式出現。我需要Dog Cat Rat – Karthik 2014-12-04 11:57:13

+0

你的預期輸出是什麼?現在你正在刪除狗項目,並設置第0項作爲狗..所以剩下的狗和鼠。 – John 2014-12-04 11:59:13

+0

狗貓大鼠,下面的一個好友評論說,設置( - , - )方法將取代,但我不想貓取代狗只是它必須移動到列表中的Oth元素 – Karthik 2014-12-04 12:00:29

相關問題