本文实例讲述了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++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
,购物网站怎么盈利呢?
如何挑选高效建站主机与优质域名?
建站主机类型有哪些?如何正确选型
制作网站的公司有哪些,做一个公司网站要多少钱?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何选择适配移动端的WAP自助建站平台?
网站制作说明怎么写,简述网页设计的流程并说明原因?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何选择适合PHP云建站的开源框架?
建站之星安装模板失败:服务器环境不兼容?
自助网站制作软件,个人如何自助建网站?
如何在云服务器上快速搭建个人网站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
北京企业网站设计制作公司,北京铁路集团官方网站?
建站之星后台密码遗忘或太弱?如何重置与强化?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
盐城做公司网站,江苏电子版退休证办理流程?
建站之星2.7模板:企业网站建设与h5定制设计专题
移民网站制作流程,怎么看加拿大移民官网?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
制作旅游网站html,怎样注册旅游网站?
建站之星上传入口如何快速找到?
如何在局域网内绑定自建网站域名?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何快速辨别茅台真假?关键步骤解析
如何快速上传建站程序避免常见错误?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何在Windows服务器上快速搭建网站?
宝塔新建站点为何无法访问?如何排查?
如何通过NAT技术实现内网高效建站?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何在企业微信快速生成手机电脑官网?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何用AWS免费套餐快速搭建高效网站?
html制作网站的步骤有哪些,iapp如何添加网页?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何快速搭建高效WAP手机网站?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
建站OpenVZ教程与优化策略:配置指南与性能提升
如何在腾讯云服务器上快速搭建个人网站?
如何规划企业建站流程的关键步骤?
图册素材网站设计制作软件,图册的导出方式有几种?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。