Java编程Iterator迭代器设计原理及实现代码示例

 更新时间:2017年10月24日 11:51:42   作者:不知不觉已变淡  
这篇文章主要介绍了Java编程Iterator迭代器设计原理及实现代码示例,具有一定参考价值,需要的朋友可以了解下。

我们知道迭代器(Iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素。那么Iterator迭代器的设计原理是什么呢?迭代器问什么定义了一个借口,而不是一个类呢?

我们假设迭代器迭代数据的功能定义为了一个类,那么,会有这样的问题。不同的集合,由于数据结构不一样,所以他们的存储方式也是不一样的。也就是说,迭代器获取的时候,获取的方式是变化的,也就是不固定的。所以把这种方式定义为具体的实现是不合理的。

无论何种集合,他们肯定都有获取的功能,而且不知道什么时候就没有数据了。所有他们也会有判断功能。于是,就把判断和获取功能抽取出来,定义在接口中。这样的话,将来无论是哪种集合在遍历的时候,它们自己只要去实现迭代器接口即可。

那具体怎么实现的呢?集合迭代器是以内部类的方式实现的。简单看一段代码。

package me.socketthread;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo { 
  public static void main(String[] args) { 
    //创建对象 
    Collection c = new ArrayList(); 
     
    //添加元素 
    c.add("hello"); 
    c.add("world"); 
    c.add("helloworld"); 
     
     
    //遍历集合对象,通过集合对象调用方法c.iterator()得到迭代器对象Iterator 
    Iterator it = c.iterator(); //返回的是Iterator的子类对象,多态。 
     
    while (it.hasNext()) {    //检查序列中是否还有元素 
      //System.out.println(it.next()); 
      String s =(String)it.next();//获得序列中的下一个元素 
      System.out.println(s); 
    } 
     
  } 
} 

输出

hello
world
helloworld

总结

以上就是本文关于Java编程Iterator迭代器设计原理及实现代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java编程利用socket多线程访问服务器文件代码示例Java多线程编程实现socket通信示例代码等,有什么问题,可以留言,欢迎大家交流讨论。感谢朋友们对脚本之家网站的支持!

相关文章

  • 如何将char类型的数字字符转换成int类型问题

    如何将char类型的数字字符转换成int类型问题

    这篇文章主要介绍了如何将char类型的数字字符转换成int类型问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • JavaSE API实现生成随机数的2种方法(Random类和Math类的Random方法)

    JavaSE API实现生成随机数的2种方法(Random类和Math类的Random方法)

    本文主要介绍了JavaSE API实现生成随机数的2种方法,主要包括Random类和Math类的random方法都可以用来生成随机数,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Java中的base64编码器

    Java中的base64编码器

    这篇文章介绍了Java中的base64编码器,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 微服务分布式架构实现日志链路跟踪的方法

    微服务分布式架构实现日志链路跟踪的方法

    在现有的系统中,由于大量的其他用户/其他线程的日志也一起输出穿行其中导致很难筛选出指定请求的全部相关日志。那我们如何来处理呢?带着这个问题一起通过本文学习下吧
    2021-08-08
  • java中几种常见的排序算法总结

    java中几种常见的排序算法总结

    大家好,本篇文章主要讲的是java中几种常见的排序算法总结,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • SpringMVC JSON数据交互实现过程解析

    SpringMVC JSON数据交互实现过程解析

    这篇文章主要介绍了SpringMVC JSON数据交互实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java中增强for循环的实现原理和坑详解

    Java中增强for循环的实现原理和坑详解

    增强的for循环是在传统的for循环中增加的强大的迭代功能的循环,是在jdk1.5之后提出来的。下面这篇文章主要给大家介绍了关于Java中增强for循环的实现原理和坑的相关资料,需要的朋友可以参考下
    2018-04-04
  • Mybatis如何配置连接池

    Mybatis如何配置连接池

    本文通过实例代码给大家详细介绍了mybatis配置连接池的方法,非常不错,具有参考借鉴价值,感兴趣的朋友参考下吧
    2016-12-12
  • java集合求和最大值最小值示例分享

    java集合求和最大值最小值示例分享

    这篇文章主要介绍了java集合求和最大值最小值示例
    2014-01-01
  • GateWay路由规则与动态路由详细介绍

    GateWay路由规则与动态路由详细介绍

    这篇文章主要介绍了GateWay路由规则与GateWay动态路由,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论