全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

本文实例讲述了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小时内与您取得联系。