java自定义迭代器作用_Java实现的自定义迭代器功能示例

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

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

import java.util.Iterator;

import java.util.NoSuchElementException;

/**

* 演示Iterator和Iterable接口,并说明怎样编写一个用于对象数组的简单迭代器。

*/

public class AarrayIterator implements Iterable, Iterator {

private final static String[] names = {"rose", "petunia", "tulip"};

public static void main(String[] args) {

AarrayIterator 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 iterator() {

index = 0;

return this;

}

}

执行结果:

rose

petunia

tulip

rose

petunia

tulip

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FZU Problem 2238 Daxia Wzc's problem

Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题&#xff1a; Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得到新数列A(1); 然后让Daxia求出数列A(1)前n项和,得到新数列A(2); 接着让Daxia求出数列A(2)前n项和,得到新…

生成器设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

java项目遇到的问题_java系列:项目中遇到的一些问题(持续更新中)

JSONArray去重的问题 JSONArray array = ["2","0","0","0","0","0"]; private String[] instanceAaary(JSONArray array) throws JSONException{String[] strs = new String[array.length()]; for (int i = 0; i …

【转】从 ArcGIS for Desktop 发布地图服务

原文链接&#xff1a;http://resources.arcgis.com/zh-CN/help/tutorials/01z300000007000000.htm 本教程的目的是将地图服务直接从 ArcGIS for Desktop 发布到 ArcGIS for Server 中。本教程与名为“在 ArcMap 中准备您的 Web 地图”的上一教程类似&#xff0c;需要使用 ArcGI…

Java tree set_Java TreeSet tailSet()方法

Java TreeSet tailSet()方法java.util.TreeSet.tailSet(E fromElement) 方法用于返回一组大于或等于指定元素的元素。1 语法public SortedSet tailSet(E fromElement)2 参数fromElement&#xff1a;这是返回集的最小边界值(包括该边界值)3 返回值返回此集合中元素大于或等于fro…

java map练习_JAVA Map练习

JAVA Map练习作者&#xff1a;萤火之森2015-04-21 12:46浏览&#xff1a;1203package pack3;import java.util.HashMap;import java.util.Iterator;import java.util.*;import java.util.Set;/*** 每一个学生都有对应的归属地* 学生Student 地址String* 学生属性&#xff1a;姓…

Objective-C 反射机制

该文章属于<简书 — 刘小壮>原创&#xff0c;特此感谢&#xff1a;<简书 — 刘小壮> http://www.jianshu.com/p/5bbde2480680 了解反射机制 Objective-C语言中的OC对象&#xff0c;都继承自NSObject类。这个类为我们提供了一些基础的方法和协议&#xff0c;我们可以…

java 模块化osgi_OSGi简介–模块化Java

java 模块化osgiOSGi联盟是这种搁浅的管理机构&#xff0c;它始于1999年。其最初目标是为网络设备创建开放搁浅。 基于此思想&#xff0c;此规范也针对Java引入。 Eclipse在Java中是第一个。 他们于2004年6月推出了基于OSGi的Eclipse IDE。 OSGi是在Java中定义动态模块的方法。…

java成绩查询_JavaWeb项目第三次总结_成绩查询的实现

查询图书的功能实现如何知道浏览器往服务器传入的参数1、在编写好查询页面后&#xff0c;使用火狐浏览器的friebug (全部—>POST—>参数)2、编写GradeListServlet&#xff0c;重写doGet()和doPOST()方法服务器处理页面请求的过程1、重写doPOST()方法。处理过程1、连接数据…

Train Problem I hdu 1022(栈)

http://acm.split.hdu.edu.cn/showproblem.php?pid1022 题意&#xff1a;给出火车的进站与出站顺序&#xff0c;判断是否可以按照给出的出站顺序出站。 #include <iostream> #include <stdio.h> #include <string.h> #include <string> #include <…

Spring数据和Redis

本文是我们学院课程的一部分&#xff0c;标题为Redis NoSQL键值存储 。 这是Redis的速成班。 您将学习如何安装Redis并启动服务器。 此外&#xff0c;您将在Redis命令行中乱七八糟。 接下来是更高级的主题&#xff0c;例如复制&#xff0c;分片和集群&#xff0c;同时还介绍了…

java的原生数据类型_Java中的8种原生数据类型(Primitive Data Types)分析

八种数据类型类型 int short long byte float double char boolean字节数 4 2 8 1 4 8 4 JVM相关大小 -2147483648~2147483647 -32768~32767 -9223372036854775808~9223372036854775807 -128~127 3.40282347E38F 1.79769313486231570E308tip:八种类型我是这样记忆的&#xff1a…

史上最全的SpringMVC学习笔记

SpringMVC学习笔记---- 一、SpringMVC基础入门&#xff0c;创建一个HelloWorld程序 1.首先&#xff0c;导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->&…

python 进程池 等待数量_【2020Python修炼记】python并发编程(六)补充—进程池和线程池...

1、2、 为啥要有 进程池和线程池进程池来控制进程数目&#xff0c;比如httpd的进程模式&#xff0c;规定最小进程数和最大进程数3、创建进程池的类pool如果指定numprocess为3&#xff0c;则进程池会从无到有创建三个进程&#xff0c;然后自始至终使用这三个进程去执行所有任务&…

shader weaver_Oracle通过邀请Weaver和Chin推动JavaFX向前发展

shader weaver昨天&#xff0c;我发布了愚人节帖子&#xff0c;内容涉及加入NASA协助探索红色大行星。 那篇文章与事实相距不远……美国宇航局开发的技术的所有细节都是100&#xff05;准确的。 哎呀&#xff0c;即使我辞职也是事实&#xff01; 唯一不正确的部分是我将加入的公…

mysql快速上手3

上一章给大家说的是数据库的视图&#xff0c;存储过程等等操作&#xff0c;这章主要讲索引&#xff0c;以及索引注意事项&#xff0c;如果想看前面的文章&#xff0c;url如下&#xff1a; mysql快速上手1mysql快速上手2索引简介 索引是对数据库表中一个或多个列&#xff08;例如…

python图像锐化_Python图像处理介绍--图像模糊与锐化

欢迎关注 “小白玩转Python”&#xff0c;发现更多 “有趣”引言在之前的文章中&#xff0c;我们讨论了边缘检测内核。在本文我们将讨论如何在图像上应用模糊与锐化内核&#xff0c;将这些内核应用到彩色图像上&#xff0c;同时保留核心图像。一如既往&#xff0c;我们从导入所…

看一下CDI 2.0 EDR1

CDI是最近对Java EE最好的补充之一。 该观点在用户和集成商之间广泛共享。 当前版本的CDI 1.2于2014年4月发布。现在&#xff0c;在2015年中期&#xff0c;我们将面对CDI 2.0规范的早期草案。 CDI 2.0将在Java 8和更高版本上运行。 最终版本计划于2016年发布&#xff0c;该路线…

redis key设计技巧

1: 把表名转换为key前缀 如, user: 2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid 3: 第3段放置主键值,如2,3,4...., a , b ,c 4: 第4段,写要存储的列名 用户表 user , 转换为key-value存储 userid username passworde email 9 Lisi 1111111 li…

python编程游戏代码 游戏人物如何升级_如何玩游戏提高python编程技能?

笔者公众号&#xff1a;技术杂学铺Python Challenge是首个谜语编程网站。挑战者需要连续挑战33个需要编程才能解开的谜题以锻炼自己的编程能力。该网站建立于2005年&#xff0c;至今已经有三百多万位访客浏览并尝试解决该网站的谜题。python challenge 官网虽然网站建立的年代比…