我正在瀏覽Java中的集合,並遇到了一些迭代器示例。我給出下面的代碼如何同時打印和移除迭代器中的元素?
public class iteratorexample {
public static void main(String[] args) {
String removeE="New York";
List<String> thelist = new ArrayList<String>();
thelist.add("Dallas");
thelist.add("Richmond");
thelist.add("Atlanta");
thelist.add("New York");
thelist.add("Birmingham");
System.out.print(thelist);
System.out.println();
Iterator<String> itr= thelist.iterator();
/*while(itr.hasNext()){
System.out.print(" " +itr.next()+" ");
} */
**while(itr.hasNext()){
String remo=(String)itr.next();
if(remo.equals(removeE)){
itr.remove();
}
}**
System.out.println();
System.out.println("After removing: ");
System.out.println(thelist);
}
}
Above Code give output
[Dallas, Richmond, Atlanta, New York, Birmingham]
After removing:
[Dallas, Richmond, Atlanta, Birmingham]
爲什麼?
如果我使用兩個while循環,迭代器不會從列表中刪除元素,爲什麼?你能幫我嗎。
public static void main(String[] args) {
String removeE="New York";
List<String> thelist = new ArrayList<String>();
thelist.add("Dallas");
thelist.add("Richmond");
thelist.add("Atlanta");
thelist.add("New York");
thelist.add("Birmingham");
System.out.print(thelist);
System.out.println();
Iterator<String> itr= thelist.iterator();
while(itr.hasNext()){
System.out.print(" " +itr.next()+" ");
}
while(itr.hasNext()){
String remo=(String)itr.next();
if(remo.equals(removeE)){
itr.remove();
}
}
System.out.println();
System.out.println("After removing: ");
System.out.println(thelist);
}
}
上面的代碼使輸出
[Dallas, Richmond, Atlanta, New York, Birmingham]
Dallas Richmond Atlanta New York Birmingham
After removing:
[Dallas, Richmond, Atlanta, New York, Birmingham]