Java中设计与使用迭代器

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();
    }
   }
}

时间: 2024-08-18 18:03:42

Java中设计与使用迭代器的相关文章

Java使用设计模式中迭代器模式构建项目的代码结构示例_java

迭代器(Iterator)模式,又叫做游标(Cursor)模式.GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节.  迭代器模式由以下角色组成:迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口. 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置. 容器角色(Container):容器角色负责提供创建具体迭代器角色的接口. 具体容器角色(Concrete

java中设计一个简单的对象池

1. 对象池 当调用对象时,不使用常规的new 构造子的方式,而是通过一 个对象池操作.即如果池中存在该对象,则取出:如果不存在,则 新建一个对象并存储在池中.当使用完该对象后,则将该对象的归 还给对象池. 这里会存在几个问题,必须注意. Tips 1,考虑多线程状态下的存取对象: Tips 2,考虑将对象池目录表设计为Singleton模式,这样使得 内存中仅存在唯一的一份缓存对象的表. 2.对象单元设计 每个对象单元指定一种类型的对象,由Class<T> type维 护.对象单元有两个Li

java企业应用-struts2迭代器遍历 action list值

问题描述 struts2迭代器遍历 action list值 action 代码: public class Test1 { private List listString = new ArrayList(); public List getListString() { return listString; } public void setListString(List listString) { this.listString = listString; } public String ex

@深入注解,在Java中设计和使用自己的注解

我们用过 JDK给我们提供的  @Override  @Deprecated @SuppressWarning 注解  ,这些注解是JDK给我们提供的 ,我们只是在用别人写好的东西 ,那么我们是否可以自己写注解呢?当然是可以的  . 我们写的注解包括三个环节  1. 注解的声明 ,也就是注解类的定义     形式如下        @interface 来进行注解的声明 package me.test;    import java.lang.annotation.* ;//导入注解包中所有注解

初学JAVA,集合迭代器问题

问题描述 初学JAVA,集合迭代器问题 这两句输出有什么不一样呀!为什么一个可以输出,一个却输出不了?这是Account类的定义. 解决方案 用Iterator<Object>才行. 解决方案二: Java中的集合的迭代器Java 集合 和 Iterator迭代器java集合之迭代器Iterator 解决方案三: 泛型错误! 名为it的迭代器泛型指明为Accout,所以在it.next().toString() 的时候 取出字符串类型被强转为Accout,由于这两个类没关系所以报错.第一句输出

使用迭代器模式来进行Java的设计模式编程_java

定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节.类型:行为类模式类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ String str = (String)it.next(); System.out.p

Java中的惰性计算简介

惰性计算(尽可能延迟表达式求值)是许多函数式编程语言的特性.惰性集合在需要时提供其元素,无需预先计算它们 ,这带来了一些好处.首先,您可以将耗时的计算推迟到绝对需要的时候.其次,您可以创造无限个集合,只要它们继续收 到请求,就会继续提供元素.第三,map 和 filter 等函数的惰性使用让您能够得到更高效的代码.Java 并没有为惰性提 供原生支持,但一些框架和后继语言支持这种惰性,我会在本期和下期文章中探讨它们. 假定使用此伪代码片段来 打印列表的长度: print length([2+1,

Java之TCP网络通信例子

 JAVA中设计网络编程模式的主要有TCP和UDP两种.     TCP是属于即时通信,点对点连接进行通信.     UDP是通过数据包来进行通信,UDP当中就会牵扯到数据的解析和传送.     在安全性能方面,TCP要略胜一筹,通信过程中不容易出现数据丢失的现象,有一方中断,两方的通信就会结束,UDP数据包传送的过程当中,一方中断,数据包有很大的可能丢失,还有可能传来的数据包的顺序是错乱的:     在效率方面,UDP要比TCP快的不只是一点点的问题,若终端有解析数据方法的函数,数据包就会源源

Java基础-15总结对象数组,集合Collection,集合List

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. (2)案例: 用数组存储5个学生对象,并遍历数组. package cn.itcast_01;