Java实现的自定义迭代器功能示例

发布时间 - 2026-01-11 00:31:21    点击率:

本文实例讲述了Java实现的自定义迭代器功能。分享给大家供大家参考,具体如下:

编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用“foreach”循环遍历你的对象。

import java.util.Iterator;
import java.util.NoSuchElementException;
/**
 * 演示Iterator和Iterable接口,并说明怎样编写一个用于对象数组的简单迭代器。
 */
public class AarrayIterator<T> implements Iterable<T>, Iterator<T> {
  private final static String[] names = {"rose", "petunia", "tulip"};
  public static void main(String[] args) {
    AarrayIterator<String> arrayIterator = new AarrayIterator<>(names);
    // Java 5,6的方式
    for (String s : arrayIterator) {
      System.out.println(s);
    }
    // Java 8的形式
    arrayIterator.forEach(System.out::println);
  }
  /**
   * 要遍历的数据
   **/
  protected T[] data;
  protected int index = 0;
  /**
   * 构造一个AarryIterator对象。
   *
   * @param data 被迭代的对象数组
   */
  public AarrayIterator(final T[] data) {
    setData(data);
  }
  /**
   * 设置(重置)数组为给定的数组,重置迭代器。
   * 参数d代表被迭代的数组对象。
   *
   * @param d 被迭代的数组对象
   */
  public void setData(final T[] d) {
    this.data = d;
    index = 0;
  }
  /**
   * 如果不是末尾,返回true,例如,if next()语句将成功执行。
   * 否则返回false,执行if next()语句会抛出异常。
   *
   * @return
   */
  public boolean hasNext() {
    return index < data.length;
  }
  /**
   * 返回该数据的下一个元素
   *
   * @return
   */
  public T next() {
    if (hasNext()) {
      return data[index++];
    }
    throw new NoSuchElementException("only " + data.length + " elements");
  }
  public void remove() {
    throw new UnsupportedOperationException("This demo Iterator does not implement the remove method");
  }
  /**
   * Iterator的方法
   *
   * @return
   */
  public Iterator<T> iterator() {
    index = 0;
    return this;
  }
}

执行结果:

rose
petunia
tulip
rose
petunia
tulip

希望本文所述对大家java程序设计有所帮助。


# Java  # 自定义  # 迭代器  # Java中HashMap和TreeMap的区别深入理解  # JAVA HashMap详细介绍和示例  # 浅析Java中Map与HashMap  # Hashtable  # HashSet的区别  # java HashMap通过value反查key的代码示例  # 举例详解Java编程中HashMap的初始化以及遍历的方法  # Java中HashMap和Hashtable及HashSet的区别  # java中Hashtable和HashMap的区别分析  # Java中的迭代和递归详解  # java 迭代器模式实例详解  # Java基础教程之HashMap迭代删除使用方法  # 迭代  # 遍历  # 自己的  # 一句  # 可以用  # 给大家  # 如果不是  # 多说  # 所述  # 抛出  # 程序设计  # 讲述了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  MySQL查询结果复制到新表的方法(更新、插入)  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  C语言设计一个闪闪的圣诞树  如何正确选择百度移动适配建站域名?  EditPlus 正则表达式 实战(3)  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  进行网站优化必须要坚持的四大原则  怎样使用JSON进行数据交换_它有什么限制  公司门户网站制作流程,华为官网怎么做?  高防服务器租用首荐平台,企业级优惠套餐快速部署  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何在云虚拟主机上快速搭建个人网站?  微信公众帐号开发教程之图文消息全攻略  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何在服务器上配置二级域名建站?  利用python获取某年中每个月的第一天和最后一天  网站制作价目表怎么做,珍爱网婚介费用多少?  如何确保西部建站助手FTP传输的安全性?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  郑州企业网站制作公司,郑州招聘网站有哪些?  Laravel如何使用withoutEvents方法临时禁用模型事件  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何在橙子建站上传落地页?操作指南详解  简历在线制作网站免费版,如何创建个人简历?  海南网站制作公司有哪些,海口网是哪家的?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Swift中switch语句区间和元组模式匹配  Laravel怎么使用artisan命令缓存配置和视图  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何快速配置高效服务器建站软件?  如何选择可靠的免备案建站服务器?  Linux系统命令中tree命令详解  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  如何在IIS中配置站点IP、端口及主机头?  如何快速上传建站程序避免常见错误?  高性价比服务器租赁——企业级配置与24小时运维服务  bootstrap日历插件datetimepicker使用方法  Laravel如何优化应用性能?(缓存和优化命令)  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  大连 网站制作,大连天途有线官网?  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Python数据仓库与ETL构建实战_Airflow调度流程详解  如何快速搭建高效WAP手机网站?