`
liuyun025
  • 浏览: 124132 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Iterator 和 Iterable 接口的区别

    博客分类:
  • java
阅读更多

 

      为什么一定要实现Iterable接口,为什么不直接实现Iterator接口呢?

 

      看一下JDK中的集合类,比如List一族或者Set一族,都是实现了Iterable接口,但并不直接实现Iterator接口。

仔细想一下这么做是有道理的。

 

      因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。

      如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。

      当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。

      除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。

      但即时这样,Collection也只能同时存在一个当前迭代位置。

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

      多个迭代器是互不干扰的。

分享到:
评论

相关推荐

    java集合_浅谈Iterable和Iterator的区别

    这篇文章将深入探讨`Iterable`和`Iterator`的区别,以及它们在实际编程中的应用。 首先,`Iterator`是一个接口,它定义了遍历集合元素的基本方法,如`next()`用于获取下一个元素,`hasNext()`检查是否还有更多元素...

    Java源码分析Iterable.pdf

    Iterable接口的定义位于java.lang.Iterable接口中,它只有一个方法,即iterator(),该方法返回一个Iterator对象,该对象用于迭代对象的元素。Iterable接口的定义如下所示: ```java public interface Iterable<T> {...

    一个使用iterator和json技术的实例

    在Java编程语言中,`Iterator`接口和`Iterable`接口是处理集合数据的重要工具,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于数据传输和存储。这个"iterator_jsonDemo"实例结合了这...

    Iterable和Iterator的关系

    在Java编程语言中,`Iterable`和`Iterator`是两个非常重要的接口,它们在处理集合数据时起到核心作用。理解这两个接口的关系对于高效地操作Java集合框架至关重要。 首先,我们来了解一下`Iterable`接口。`Iterable`...

    【JDK1.8源码剖析】内部迭代器 Iterable接口

    文章目录Iterable源码分析(一)简介(二...当然,一个类如果没有实现Iterable接口,也可以通过挂载外部迭代器Iterator进行遍历。 此外,内部迭代器还可转换为可分割迭代器Spliterator,以便用于流式操作 注意区别于外

    详解Java中Iterable与Iterator用法

    Iterable接口中定义了一个方法:iterator(),该方法返回一个Iterator对象。因此,我们可以使用Iterable接口来获取一个Iterator对象,并使用该对象来遍历集合中的元素。 在Java中,我们可以使用Iterator对象来遍历...

    关于方法iterator()找不着的问题~~~~~

    如果你正在使用的类库版本不支持`iterator()`方法,比如你引用了一个旧版本的集合库,而这个版本并未实现`Iterable`接口,那么`iterator()`将不可用。确保你的项目依赖是最新的,并且与你的代码兼容。 2. **类型...

    Java源码分析:深入探讨Iterator模式

    在Java中,集合框架通过实现`Iterable`接口并提供一个`iterator()`方法来支持迭代器模式。下面我们将深入探讨`java.util.AbstractList`类中如何实现迭代器模式。 #### 四、`java.util.AbstractList`中的迭代器实现 ...

    Iterator详解

    `iterator()`方法是`Iterable`接口的一个方法,由`Collection`接口继承。当你调用一个集合对象的`iterator()`方法时,它会返回一个实现了`Iterator`接口的对象,这个对象可以用来遍历集合中的元素。例如: ```java...

    自己实现java中Iterator(迭代器功能).docx

    #### 解释Iterable接口 除了`Iterator`之外,还有一个相关的接口`Iterable`。这个接口主要用于定义一个可以被迭代的对象,它提供了一个`iterator()`方法,该方法返回一个迭代器对象。 ```java public interface ...

    示例iterator使用及技巧

    在Java中,所有实现了`Iterable`接口的类(如`Collection`接口的所有实现类)都可以返回一个`Iterator`对象来遍历其内部的元素。 ##### 2. 获取`Iterator`实例 获取`Iterator`实例的方法非常简单,只需调用实现了`...

    Iterator Pattern(迭代模式)

    在Java中,迭代器模式的实现通常使用`Iterable`接口和`Iterator`接口。`Iterable`接口定义了一个`iterator()`方法,返回一个`Iterator`实例。`Iterator`接口则包含`hasNext()`和`next()`方法。 ```java public ...

    java.util包

    2. Iterator和Iterable接口:Iterator用于遍历集合中的元素,而Iterable接口使得类可以被for-each循环遍历。这两个接口是Java集合框架的重要组成部分,提供了访问和操作集合元素的标准方式。 3. Map接口和其实现类...

    Java Iterator迭代器_动力节点Java学院整理

    Iterable接口则提供了一个iterator()方法,用于返回一个标准的Iterator实现。这个接口的实现者可以将其用于foreach语句中,例如Collection、Deque、List、Queue、Set等。 使用Iterator的简单例子可以展示它的使用...

    【JDK1.8源码剖析】外部迭代器Iterator接口

    注意区别于内部迭代器Iterable和枚举器Enumeration 外部迭代器的设计背后体现着迭代器设计模式的思想 (二)源码分析 该接口就只有四种方法 // 是否存在未遍历元素 boolean hasNext(); // 返回下一个元素

    设计模式之迭代器模式(Iterator)

    `Iterable`接口定义了获取迭代器的方法`iterator()`,而`Iterator`接口提供了`hasNext()`和`next()`方法,分别用于检查是否还有下一个元素以及获取当前元素。 迭代器模式的结构通常包括以下组件: 1. **迭代器接口*...

    Java学习之Iterator(迭代器)的一般用法

    在Java中,任何实现了Iterable接口的集合都可以通过调用`iterator()`方法来获取一个Iterator实例。例如,对于一个`ArrayList`列表`list`,你可以这样获取其迭代器: ```java Iterator<String> iterator = list....

    【Java设计模式】(1)迭代器模式Iterator

    1. **迭代器(Iterator)角色**:这是模式的核心,它定义了遍历元素的接口,通常包含`hasNext()`和`next()`两个方法,前者检查是否还有更多元素,后者返回下一个元素。 2. **聚合(Aggregate)角色**:持有对象集合...

    迭代器的使用 (2).docx

    迭代器在计算机编程中是一种设计...在Java中,`Iterator`和`ListIterator`接口提供了遍历和操作元素的功能,而`Iterable`接口使得对象可以被`foreach`循环使用。通过自定义`Iterator`的行为,可以实现特定的遍历逻辑。

    java工具类 java开发助手 java util

    12. Iterator和Iterable接口:Iterator用于遍历集合元素,Iterable则是所有可迭代对象的父接口,例如for-each循环就是基于这两个接口实现的。 13. Optional类:Java 8引入的Optional类,用于表示可能不存在的值,...

Global site tag (gtag.js) - Google Analytics