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

    迭代模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。以下是例子:

    public interface Iterator {  

    Object next();

    void first();

    void last();

    boolean hasNext(); }

    public class IteratorImpl implements Iterator{

    private List list; private int index;

    public IteratorImpl(List list){

    index = 0;

    this.list = list; }

    public Object next() {

    Object obj = list.get(index);

    index++; return obj; }

    public void first() {

    index = 0; }

    public void last() {

    index = list.getSize(); }

    public boolean hasNext() {

    return index < list.getSize(); } }

    public interface List {

    Iterator iterator();
    Object get(int index);
    int getSize();
    void add(Object obj);
    }

    public class ListImpl implements List{

    private Object[] list;

    private int index;

    private int size;

    public ListImpl(){

    index = 0;

    size = 0;

    list = new Object[100]; }

    public Iterator iterator() {

    return new IteratorImpl(this); }

    public Object get(int index) {

    return list[index]; }

    public int getSize() {

    return this.size; }

    public void add(Object obj) {

    list[index++] = obj;

    size++; } }

    //测试类

    public class Test {

    public static void main(String[] args) {

    List list = new ListImpl();

    list.add("a");

    list.add("b");

    list.add("c");

    //第一种迭代方式

    Iterator it = list.iterator();

    while(it.hasNext()){

    System.out.println(it.next()); }

    System.out.println("======");

    //第二种迭代方式

    for(int i = 0;i<list.getSize();i++){

    System.out.println(list.get(i)); } } }

  • 相关阅读:
    动态规划之矩阵连乘
    常见的开放符号服务器
    QT中的宏定义
    QT Creator项目路径设置
    批处理-日常小功能用法记录
    Qt Creator快捷键记录
    利用Navicat premium实现将数据从Oracle导入到MySQL
    php BCmath 封装类
    PHP 反射类
    Html标签生成类
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2541988.html
Copyright © 2011-2022 走看看