替换列表中其他元素的索引时,列表中的其他元素不显示

时间:2014-12-04 11:37:45

标签: java

我有三个元素的列表但是当我迭代时,我只删除一个元素并移动被移除元素的位置。

此时,只显示已删除的元素,其他元素未显示..

我在下面提供了我的代码。

请给我一些解决方案。

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: 狗

预期:狗,猫,大鼠

2 个答案:

答案 0 :(得分:0)

为什么你只得到Dog作为输出的第一件事是因为你的System.out.println(str);语句在if if中只有当有一个名为 Dog 的元素时才会运行。对于其他元素,它不会打印任何内容。

第二件事,如果你想让你的输出是Dog,Cat,Rat,你就不会使用lst.set(0, str);来获得它,因为set方法将替换位置0的元素。所以你的Cat元素将会被狗取代。因此,你不会在输出中获得Cat。

For Info about set method

修改

尽管使用add(),但仍尝试使用set()方法。

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

答案 1 :(得分: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);
    }

}
}