1.Iterable接口在java.lang包中;Iterator接口在java.util包中

2.Iterable中只有一个方法,那就是返回一个Iterator迭代器:Iterator iterator()

而Iterator中有关于迭代器的核心功能,next(),hasNext(),remove()

所以说,Iterable接口实现后的功能是“返回”一个迭代器,而Iterator接口实现后的功能是“使用”一个迭代器

3.在java.util中的容器类基本都实现了Iterable ,下图截自jdk1.6

容器中的类都实现了Iterable接口而非Iterator接口的原因是,因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。 当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。

而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。  多个迭代器是互不干扰的。

原文:http://www.cnblogs.com/ivywenyuan/p/3853196.html

java中iterable_java中的Iterator和Iterable相关推荐

  1. Java数据结构一 —— Java Collections API中的表

    1.Collection接口 位于java.util包中,以下是重要的部分. 1 public interface Collection<AnyType> extends Iterable ...

  2. 用 for/in 在 Java 5.0 中增强循环

    http://www.ibm.com/developerworks/cn/java/j-forin.html 简介: for/in 循环通常叫作 增强的 for 或者 foreach,它是 Java ...

  3. JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。

    JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的. 看完这段代码是不是很熟悉,与我们上面代码基本类似.单列集合都使用到了迭代器,我们以Arr ...

  4. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  5. Java Persistence API中的FetchType LAZY和EAGER之间的区别?

    我是Java Persistence API和Hibernate的新手. Java Persistence API中的FetchType.LAZY和FetchType.EAGER什么区别? #1楼 我 ...

  6. JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介

    JDK提供了大量优秀的集合实现供开发者使用,合格的程序员必须要能够通过功能场景和性能需求选用最合适的集合,这就要求开发者必须熟悉Java的常用集合类.本文将就Java Collections Fram ...

  7. Java求字符串中出现次数最多的字符

    Java求字符串中出现次数最多的字符  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611      Java ...

  8. 【Java】NIO中Selector的select方法源码分析

    该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看[Java]NIO中Channel的注册源码分析, [Java]NIO中Selector的创建源码分析 Select ...

  9. java unsafe park_Java中Unsafe类详解

    http://www.cnblogs.com/mickole/articles/3757278.html Java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操 ...

最新文章

  1. 概率统计:第七章 参数估计
  2. SpringMVC文件上传下载和拦截器
  3. Zabbix监控Mysql数据库性能
  4. MySQL基础篇(06):事务管理,锁机制案例详解
  5. hsweb提取页面查询参数_zabbix-基础系列(七)-zabbix用户参数
  6. 笔记本暗屏维修多少钱_电视机烧了维修多少钱?
  7. Unity3d + UGUI 的多分辨率适配
  8. JQuery Dialog UI按钮文字国际化
  9. 洛谷——P1838 三子棋I
  10. SylixOS PCI 驱动 分析--设备枚举
  11. Docker 开启镜像加速 (网易和阿里)
  12. Maven实战 4 -- Maven核心概念
  13. 配置文件加密 HikariDataSource
  14. Win11任务栏大小调整
  15. 开启共享文件夹/共享打印机功能
  16. Daily Scrum Meeting 11.07
  17. sudo,,sudo-i ,,su的区别
  18. 企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?
  19. Java编程基础-方法
  20. 基本电子元器件识别法

热门文章

  1. IntelliJ IDEA如何直接打开运行Java文件(idea如何直接运行Java程序)
  2. ubuntu+python+百度AI识别图片中的文字
  3. VSCode 搭建vue
  4. Python-Django毕业设计超市会员积分管理系统(程序+Lw)
  5. flink sql 异常:INTEGER and VARCHAR(2147483647) does not have common type no
  6. 关于kendo.ui父页面调用子页面的方法问题
  7. SVG_41_一篇10万+的文章效果_点击后展开画卷
  8. “心动长株潭·百景金秋行”启动式暨长沙市旅游景区协会成立大会成功举办
  9. Ethereum钱包区块同步问题
  10. PHP 后端开发之调试方法