本文实例讲述了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迭代删除使用方法
# 迭代
# 遍历
# 自己的
# 一句
# 可以用
# 给大家
# 如果不是
# 多说
# 所述
# 抛出
# 程序设计
# 讲述了
相关文章:
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何在企业微信快速生成手机电脑官网?
在线教育网站制作平台,山西立德教育官网?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站之星在线客服如何快速接入解答?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何通过wdcp面板快速创建网站?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
C++如何使用std::optional?(处理可选值)
如何用好域名打造高点击率的自主建站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Thinkphp 中 distinct 的用法解析
如何撰写建站申请书?关键要点有哪些?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何高效利用亚马逊云主机搭建企业网站?
如何快速搭建个人网站并优化SEO?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何高效完成自助建站业务培训?
建站之星免费模板:自助建站系统与智能响应式一键生成
家具网站制作软件,家具厂怎么跑业务?
建站主机选哪种环境更利于SEO优化?
如何在Windows服务器上快速搭建网站?
如何安全更换建站之星模板并保留数据?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
建站之星云端配置指南:模板选择与SEO优化一键生成
如何快速搭建二级域名独立网站?
如何用西部建站助手快速创建专业网站?
如何选择高效便捷的WAP商城建站系统?
制作电商网页,电商供应链怎么做?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何通过.red域名打造高辨识度品牌网站?
如何正确选择百度移动适配建站域名?
创业网站制作流程,创业网站可靠吗?
动图在线制作网站有哪些,滑动动图图集怎么做?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何快速搭建安全的FTP站点?
微信小程序 input输入框控件详解及实例(多种示例)
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
,制作一个手机app网站要多少钱?
如何制作一个表白网站视频,关于勇敢表白的小标题?
宝塔建站助手安装配置与建站模板使用全流程解析
建站之星后台管理如何实现高效配置?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
香港服务器租用每月最低只需15元?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何高效搭建专业期货交易平台网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。