zoukankan      html  css  js  c++  java
  • Java学习之Iterator(迭代器)的一般用法

    迭代器(Iterator)

      迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

      Java中的Iterator功能比较简单,并且只能单向移动:

      (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

      (2) 使用next()获得序列中的下一个元素。

      (3) 使用hasNext()检查序列中是否还有元素。

      (4) 使用remove()将迭代器新返回的元素删除。

      Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

    code:

     1  list l = new ArrayList();
     2   l.add("aa");
     3   l.add("bb");
     4   l.add("cc");
     5   for (Iterator iter = l.iterator(); iter.hasNext();) {
     6    String str = (String)iter.next();
     7    System.out.println(str);
     8   }
     9   /*迭代器用于while循环
    10  Iterator iter = l.iterator();
    11   while(iter.hasNext()){
    12    String str = (String) iter.next();
    13    System.out.println(str);
    14   }
    15   */

    一个错误的示范:

     1 package com.test;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 
     7 public class Iterator_test {
     8 
     9     public static void main(String[] args) {
    10         List<String> lists = new ArrayList<String>();
    11         lists.add("A");
    12         lists.add("B");
    13         lists.add("C");
    14         lists.add("D");
    15         lists.add("E");
    16         lists.add("F");
    17         lists.add("G");
    18         lists.add("H");
    19         Iterator it = lists.iterator();
    20         while(it.hasNext()){
    21             lists.remove(2);
    22             System.out.println(it.next());
    23         }
    24     }
    25 
    26 }

    即在迭代输出的时候一定不能对集合进行删除元素。

    Iterator it = lists.iterator();
            while(it.hasNext()){
                lists.remove(2);
                System.out.println(it.next());
            }

    这样是错误的

  • 相关阅读:
    jquery on()方法绑定多个选择器,多个事件
    html中常用的特殊符号(转)
    jQuery自定义动画,animate()包装器方法
    纯CSS下拉菜单
    DIV水平居中的几种方法
    OOXML是什么
    Chrome网络工具总结
    Content-Length错误导致的Servlet下载文件失败问题
    Fiddler操作总结
    WinSCP上传下载过滤指定目录和文件
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/5707815.html
Copyright © 2011-2022 走看看