我有三个元素的列表但是当我迭代时,我只删除一个元素并移动被移除元素的位置。
此时,只显示已删除的元素,其他元素未显示..
我在下面提供了我的代码。
请给我一些解决方案。
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 :(得分:0)
为什么你只得到Dog作为输出的第一件事是因为你的System.out.println(str);
语句在if if中只有当有一个名为 Dog 的元素时才会运行。对于其他元素,它不会打印任何内容。
第二件事,如果你想让你的输出是Dog,Cat,Rat,你就不会使用lst.set(0, str);
来获得它,因为set方法将替换位置0的元素。所以你的Cat元素将会被狗取代。因此,你不会在输出中获得Cat。
修改强>
尽管使用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);
}
}
}