1、迭代输出时删除元素的注意点
正常情况下,一个集合要把内容交给Iterator输出,但是集合操作中也存在一个remove()方法,如果在使用Iterator输出时集合自己调用了删除方法,则会出现运行时的错误。
范例:不正确的删除方法
- public class IteratorDemo03 {
- public static void main(String[] args) {
- List<String> all = new ArrayList<String>();
- // 实例化List接口
- all.add("hello");
- // 增加元素
- all.add("_");
- // 增加元素
- all.add("world");
- // 增加元素
- Iterator<String> iter = all.iterator(); // 直接实例化
- Iterator接口
- while (iter.hasNext()) {
- String str = iter.next(); // 取出内容
- if ("_".equals(str)) { // 判断内容是否是"_"
- all.remove(str);
- // 删除当前元素,使用
- 集合删除
- } else {
- System.out.print(str + "、"); // 输出元素内容
- }
- }
- System.out.println("\n删除之后的集合:" + all); // 输出集合内容,调用
- toString()方法
- }
- }
程序运行结果:
- hello、
- 删除之后的集合:[hello, world]
正确的删除方法:iter.remove();
参考:http://book.51cto.com/art/200908/141072.htm
2、不能对Iterator<E>使用for-each循环
参考:http://rednaxelafx.iteye.com/blog/180966