迭代输出:Iterator总结

来源:互联网 发布:破壁机品牌推荐 知乎 编辑:程序博客网 时间:2024/05/17 01:05

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()方法  
  •     }  
  • 程序运行结果:

    1. hello、  
    2. 删除之后的集合:[hello, world] 

     

     

    正确的删除方法:iter.remove();  

     

    参考:http://book.51cto.com/art/200908/141072.htm

     

    2、不能对Iterator<E>使用for-each循环

    参考:http://rednaxelafx.iteye.com/blog/180966