列表中的其他元素在替换列表中其他元素的索引时不显示
问题描述:
我有一个包含三个元素的列表,但是当我迭代时,我只删除一个元素并移动已删除元素的位置。列表中的其他元素在替换列表中其他元素的索引时不显示
在,那时没有被显示仅显示移除的元素的其他元素..
我下面提供我的代码。
请给我提供一些解决方案。
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: 狗
预计:狗,猫,鼠
答
为什么你只得到了狗作为输出的第一件事,是因为你有你的System.out.println(str);
声明里面if块只有在有元件时才运行狗。对于其他元素,它不会打印任何东西。第二件事,如果你想让你的输出成为Dog,Cat,Rat,那么你不会通过使用lst.set(0, str);
得到它,因为set方法会替换位置0处的元素。所以你的Cat元素将被Dog替换。所以你不会在你的输出中得到Cat。
编辑:
尝试用尽管set()
add()
方法。
while(iterate.hasNext()){
String str = iterate.next();
if(str.equalsIgnoreCase("Dog")){
iterate.remove();
lst.add(0, str);
}
}
答
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);
}
}
}
你不应该当你通过它迭代改变的容器。它搞砸了东西。 – khelwood 2014-12-04 11:41:41