迭代输出:Iterator总结

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

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值