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手机网站?

