从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next
只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的
collection,则迭代器的行为是不确定的。
如下是一个iterator.remove()的测试代码:
package test;
public class TestIteratorRemove {
public static void main(String[] args) {
// TODO Auto-generated method
stub
java.util.Collection c =
null;
java.util.ArrayList al = new
java.util.ArrayList();
for (int i = 0; i
< 10; i++) {
String str =
i + "";
al.add(str);
}
c = al;
java.util.Iterator it =
c.iterator();
for (int i = 0; i
< 9; i++) {
System.out.println((String)
it.next());
if(i==5||i==7){
it.remove();
}
}
it.remove();
System.out.println("**********************************");
it = c.iterator(); //
关键的!!!
while (it.hasNext()) {
System.out.println((String)
it.next());
}
}
}
结果如下:
0
1
2
3
4
5
6
7
8
**********************************
0
1
2
3
4
6
9
可以看到集合中的5、7和8被移除了。所谓的标为关键的it = c.iterator();
只是因为刚才iterator指针靠后,重新获取后指向集合的开始。如果把it = c.iterator(); //
关键的!!!注释掉,结果则为最后剩余的元素9.如下所示:
0
1
2
3
4
5
6
7
8
**********************************
9