zoukankan      html  css  js  c++  java
  • 迭代器模式

    迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

    聚合对象可以是数组,也可以是集合等。

    遍历集合,我们可以使用for循环,foreach循环。遍历数组,可以使用for循环,foreach循环。

    但是使用上面这两种形式,我们都需要知道聚合对象是数组,还是集合。

    但是使用了迭代器之后,我们只要拿到了聚合对象的迭代器之后,就可以遍历元素了,不需要知道聚合对象是集合还是数组。

    一般,集合对象可以调用iterator()方法获得自己的迭代器对象,而数组不支持iterator()方法。但是我们可以创建一个迭代器对象 。

     1 /**
     2  * Integer[]数组 迭代器类   通过构造器传入要迭代的数组对象
     3  * @author wly
     4  *
     5  */
     6 public class ArrayIterator implements Iterator<Integer> {
     7     Integer[] arr;
     8     int position = 0;
     9     public ArrayIterator(Integer[] arr)
    10     {
    11        this.arr = arr;    
    12     }
    13     @Override
    14     public boolean hasNext() {
    15         if(position >= arr.length || arr[position] == null)
    16         {
    17             return false;
    18         }
    19         return true;
    20     }
    21 
    22     @Override
    23     public Integer next() {
    24         Integer  ele = arr[position];
    25         position++;
    26         return ele;
    27     }
    28 
    29     @Override
    30     public void remove() {
    31         throw new UnsupportedOperationException("这个数组迭代器不支持删除元素!");    
    32     }
    33 
    34 }

    提供一个测试类:

     1 public class TestClass {
     2 
     3     public static void main(String[] args) {
     4         Integer[] a = new Integer[]{1,2,3};
     5         //将数组传入迭代器的构造器中  ,从而让迭代器拿到要迭代的数组对象
     6         Iterator iterator = new ArrayIterator(a);
     7         while(iterator.hasNext())
     8         {
     9             Integer num = (Integer)iterator.next();
    10             System.out.println(num);
    11             
    12         }
    13     }
    14 }
  • 相关阅读:
    Eclipse上改动Jython代码的Comment颜色
    StaggeredGridView+universal-image-loader载入网路图片实现瀑布流
    HDU 1890 Robotic Sort
    overload和override
    FileStream大文件复制
    [Asp.Net]状态管理(Session、Application、Cache)
    c#简单自定义异常处理日志辅助类
    Socket网络编程(3)--两端通信
    [Asp.Net]状态管理(ViewState、Cookie)
    Socket网络编程(2)--服务端实现
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4226786.html
Copyright © 2011-2022 走看看