快速业务通道

Java中设计与使用迭代器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Java中设计与使用迭代器

时间:2011-03-24 zhangjunhd

1.迭代器设计

迭代器是一种模式,它可以使得对于序列类型的数据结构的遍 历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是 什么样子的。

一般的迭代器对外提供的接口有:

[1]检查是否至序列末端;

[2]返回当前的对象;

[3]过渡到下一个对象。

我们基于以上三点,提供一个迭代器Interface。

<<interface>>MyIterator.java

package com.zj.iterator; public interface MyIterator<T> {    boolean end();    T current();    void next(); }

接下来,设计一个序列,并部署上面设计的迭代器。我们使用 一个ArrayList作为底层的数据结构,设计一个内部类 LinksIterator来实现MyIterator接口,这样可以提供迭代器功能 。通过public MyIterator<T> browser()方法返回该迭代器 的实例。

Links.java

package com.zj.iterator; import java.util.ArrayList; import java.util.List; public class Links<T> {    private List<T> items = new ArrayList<T>();    public void add(T x) {     items.add(x);    }    private class LinksIterator implements MyIterator<T> {     private int i = 0;     public boolean end() {       return i == items.size();     }     public T current() {       return items.get(i);     }     public void next() {       if (i < items.size())         i++;     }    }    public MyIterator<T> browser() {     return new LinksIterator();    }    public static void main(String[] args) {     Links<Integer> links = new Links<Integer>();     for (int i = 1; i < 6; i++)       links.add(i);     // use MyIterator     MyIterator<Integer> myItr = links.browser ();     while (!myItr.end()) {       System.out.print(myItr.current() + " ");       myItr.next();     }    } }

Java中设计与使用迭代器(2)

时间:2011-03-24 zhangjunhd

在Link2.java中,我们使用一个匿名内部类替代Links.java中内部类的设计。

Links2.java

package com.zj.iterator; import java.util.ArrayList; import java.util.List; public class Links2<T> {    private List<T> items = new ArrayList<T>();    public void add(T x) {     items.add(x);    }    public MyIterator<T> browser() {     return new MyIterator<T>() {       private int i = 0;       public boolean end() {         return i == items.size();       }       public T current() {         return items.get(i);       }       public void next() {         if (i < items.size())           i++;       }     };    }    public static void main(String[] args) {     Links2<Integer> links = new Links2<Integer>();     for (int i = 1; i < 6; i++)       links.add(i);     // use MyIterator     MyIterator<Integer> myItr = links.browser ();     while (!myItr.end()) {       System.out.print(myItr.current() + " ");       myItr.next();     }    } }

2.使用Java提供的迭代器

Java提供一个专

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号