• 【设计模式】16.迭代器模式


     1 package com.shejimoshi.behavioral.Iterator;
     2 
     3 
     4 /**
     5  * 功能:我们的迭代器接口
     6  * 时间:2016年3月4日上午9:17:36
     7  * 作者:cutter_point
     8  */
     9 public interface MyIterator
    10 {
    11     /**
    12      * 得到第一个元素
    13      * @return
    14      */
    15     public Object first();
    16     /**
    17      * 得到下一个元素
    18      * @return
    19      */
    20     public Object next();
    21     /**
    22      * 是否遍历到末尾
    23      * @return
    24      */
    25     public boolean isDone();
    26     /**
    27      * 得到当前元素
    28      * @return
    29      */
    30     public Object currentItem();
    31 }
     1 package com.shejimoshi.behavioral.Iterator;
     2 
     3 import java.util.List;
     4 
     5 
     6 /**
     7  * 功能:实现对list的遍历的迭代器
     8  * 时间:2016年3月4日上午9:20:07
     9  * 作者:cutter_point
    10  */
    11 public class MyIistIterator implements MyIterator
    12 {
    13     private List list;
    14     private int current = 0;    //当前的位置
    15     
    16     public MyIistIterator(List l)
    17     {
    18         this.list = l;
    19     }
    20 
    21     @Override
    22     public Object first()
    23     {
    24         if(list == null)
    25             return null;
    26         return list.get(0);
    27     }
    28 
    29     @Override
    30     public Object next()
    31     {
    32         Object o = null;
    33         ++current;
    34         //如果还没有超出范围,那么返回下一个
    35         if(current < list.size())
    36         {
    37             o = list.get(current);
    38         }//if
    39         return o;
    40     }
    41 
    42     @Override
    43     public boolean isDone()
    44     {
    45         return current >= list.size() ? true : false;
    46     }
    47 
    48     @Override
    49     public Object currentItem()
    50     {
    51         return list.get(current);
    52     }
    53 
    54 }
     1 package com.shejimoshi.behavioral.Iterator;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 
     7 /**
     8  * 功能:提供一种方法顺序访问一个聚合对象中各个元素,而又不许暴露该对象的内部表示
     9  * 适用:访问一个聚合对象的内容而无需暴露它的内部表示
    10  *         支持对聚合对象的多种遍历
    11  *         为遍历不同的聚合结构提供一个统一地接口
    12  * 时间:2016年3月4日上午8:49:55
    13  * 作者:cutter_point
    14  */
    15 public class Test
    16 {
    17     public static void main(String[] args)
    18     {
    19         List lts = new ArrayList<Integer>();
    20         lts.add(1);lts.add(8);lts.add(7);lts.add(7);lts.add(1);lts.add(0);lts.add(7);lts.add(4);
    21         lts.add(7);lts.add(4);lts.add(2);
    22         
    23         MyIterator mit = new MyIistIterator(lts);
    24         
    25         System.out.println("第一个元素是:" + mit.first());
    26         while(!mit.isDone())
    27         {
    28             System.out.print(mit.currentItem() + "	");
    29             mit.next();
    30         }
    31     }
    32 }

    测试结果:

    第一个元素是:1
    1	8	7	7	1	0	7	4	7	4	2	
    

      

  • 相关阅读:
    GO语言系列- 结构体和接口
    GO语言系列- 高级数据类型之数组、切片、map
    tomcat8开启APR模式
    python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
    linux dig 命令使用
    究竟什么时候该使用MQ?
    Python 列表(List) 的三种遍历(序号和值)方法
    python函数里引用全局变量
    python(xlsxwriter模块使用)
    Linux下生成patch和打patch
  • 原文地址:https://www.cnblogs.com/cutter-point/p/5240935.html
Copyright © 2020-2023  润新知