Java1:迭代器模式

迭代器模式

所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式。本文以Java中的容器为例,模拟Iterator的原理。

 

定义一个容器Collection接口

public interface Collection {

    void add(Object obj);

    int size();

    Iterator iterator();

}

 

定义一个Iterator迭代器的接口

public interface Iterator {

    Object next();

    boolean hasNext();

}

 

定义一个ArrayList,实现Collection接口,并写一个实现了Iterator接口的内部类

public class ArrayList implements Collection {

    Object[] objects = new Object[10];

    int index = 0;

   

    public void add(Object obj) {

       if(index == objects.length) {

           Object[] newObjects = new Object[objects.length * 2];

           System.arraycopy(objects, 0, newObjects, 0, objects.length);

           objects = newObjects;

       }

       objects[index] = obj;

       index ++;

    }

 

    public int size() {

       return index;

    }

 

    public Iteratoriterator() {

       return new ArrayListIterator();

    }

 

    private class ArrayListIterator implements Iterator {

       private int currentIndex = 0;

      

       @Override

       public boolean hasNext() {

           if(currentIndex >= index) {

              return false;

           } else {

              return true;

           }

       }

      

       @Override

       public Objectnext() {

           Object obj = objects[currentIndex];

           currentIndex ++;

           return obj;

       }

    }

}

 

编写测试程序类Test

public class Test {

    public static void main(String[] args) {

       Collection c = new ArrayList();

       for(int i = 0; i < 5; i++) {

           c.add("string " + i);

       }

       System.out.println(c.size());

      

       Iterator it = c.iterator();

       while(it.hasNext()) {

           Object obj = it.next();

           System.out.println(obj.toString() + " ");

       }

    }

}

 

运行结果:

5

string 0

string 1

string 2

string 3

string 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值