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

    迭代器模式的组成部分

    Aggregate(抽象聚合类)

    它用于存储和管理元素对象,声明一个createiterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。

    ConcreteAggregate(具体聚合类)

    它用于抽象聚合类的子类,实现了在抽象集合类中的声明的createIterator()方法,该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例。

    Iterator

    它定义了访问和遍历元素的接口,声明了用户遍历数据元素的方法。

    first()://用于获取第一个元素

    next();//用于访问下一个元素

    hasnext();//用于判断是否还有下一个元素

    currentitem();//用于获取当前元素

    ConcreteIterator

    它实现了抽象迭代器接口,完成了对聚合对象的遍历,同时在具体迭代器中通过游标访问来标记在聚合对象中所处的当前位置,在具体实现时,游标通常是一个表示位置的非负整数。

    代码如下:

    package com.china.wanson;

    public interface Iterator {
    public boolean hasNext();
    public Object next();

    }


    package com.china.wanson;

    public interface List {
    public void add(Object object);
    public Object get(int index);
    public Iterator interator();
    public int getSize();

    }

    package com.china.wanson;

    public class ConcreteAggregate implements List{

    private Object[] list;
    private int size=0;
    private int index=0;


    public void add(Object object) {
    list[index++]=object;
    size++;
    }

    public Object get(int index) {

    return list[index];
    }

    public Iterator interator() {

    return new ConcreteIterator(this);
    }

    public int getSize() {
    return size;
    }
    }



    package com.china.wanson;



    public class ConcreteIterator implements Iterator {
    private List list=null;
    private int index;

    public ConcreteIterator(List list){
    super();
    this.list=list;
    }

    public boolean hasNext() {
    if(index>=list.getSize()){
    return false;
    }else{
    return true;
    }
    }

    public Object next() {
    Object object=list.get(index++);
    return object;
    }
    }
  • 相关阅读:
    xml语言
    java多线程
    MariaDb数据库管理系统的学习(一)安装示意图
    Codeforces Round #274 (Div. 2) --A Expression
    Java常见Exception物种
    JavaIO流程--创建文件和目录的实例
    C#主线程等待子线程运行结束
    向Oracle中插入记录时,出现“Oracle.DataAccess.Client.OracleException ORA-00933 ”错误
    PLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案
    修改Oracle 表空间名称 tablespace name
  • 原文地址:https://www.cnblogs.com/wq-9/p/10120668.html
Copyright © 2011-2022 走看看