Iterator是迭代器类(其实在javaAPI中其也是一个接口),而Iterable是接口。
好多类都实现了Iterable接口,这样对象就可以调用iterator()方法(返回一个Iterator对象)。
一般都是结合着用,比如
HashMap类就实现了Iterable接口,而要访问或打印出Map中所有内容时,就可以这样: HashMap hashMap;
Iterator iter = hashMap.iterator();
while(iter.hashNext()) {
String s = iter.next();
}
为什么一定要实现Iterable接口,为什么不直接实现Iterator接口呢?
看一下JDK中的集合类,比如List一族或者Set一族,都是实现了Iterable接口,但并不直接实现Iterator接口。
仔细想一下这么做是有道理的。
因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。
如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。
当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。
除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。
但即时这样,Collection也只能同时存在一个当前迭代位置。
而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
多个迭代器是互不干扰的。
相关推荐
java 中 Iterator 与Iterable的作用;java语言需要更多基础沉淀,扎扎实实,后面的各种项目都会如何天翼。进行更高阶的用法和一些框架的原理都离开最基础的东西,基础虽然枯燥,但是也很有乐趣。
这篇文章将深入探讨`Iterable`和`Iterator`的区别,以及它们在实际编程中的应用。 首先,`Iterator`是一个接口,它定义了遍历集合元素的基本方法,如`next()`用于获取下一个元素,`hasNext()`检查是否还有更多元素...
Iterable接口的定义位于java.lang.Iterable接口中,它只有一个方法,即iterator(),该方法返回一个Iterator对象,该对象用于迭代对象的元素。Iterable接口的定义如下所示: ```java public interface Iterable<T> {...
Java中Iterable与Iterator是两个非常重要的概念,它们都是Java集合框架中最基本的组件,用于遍历和迭代集合中的元素。Iterable是Java中的一个接口,表示可以被迭代的对象,而Iterator是Java中的一个迭代器对象,用于...
### 自己实现Java中的Iterator(迭代器功能) #### 背景与动机 在Java编程过程中,迭代器(`Iterator`)是一种常见的用于遍历集合元素的机制。它提供了访问集合元素的方式,而不暴露底层数据结构。对于学习或进阶...
在Java中,集合框架通过实现`Iterable`接口并提供一个`iterator()`方法来支持迭代器模式。下面我们将深入探讨`java.util.AbstractList`类中如何实现迭代器模式。 #### 四、`java.util.AbstractList`中的迭代器实现 ...
在Java编程语言中,`Iterable`和`Iterator`是两个非常重要的接口,它们在处理集合数据时起到核心作用。理解这两个接口的关系对于高效地操作Java集合框架至关重要。 首先,我们来了解一下`Iterable`接口。`Iterable`...
在Java编程语言中,`Iterator`接口和`Iterable`接口是处理集合数据的重要工具,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于数据传输和存储。这个"iterator_jsonDemo"实例结合了这...
在Java中,任何实现了Iterable接口的集合都可以通过调用`iterator()`方法来获取一个Iterator实例。例如,对于一个`ArrayList`列表`list`,你可以这样获取其迭代器: ```java Iterator<String> iterator = list....
在Java编程中,`iterator()`方法是集合框架中非常关键的一部分,主要用于遍历集合中的元素。当你遇到“方法iterator()找不着的问题”时,这通常意味着你在尝试使用`iterator()`时遇到了错误,可能是由于以下几个原因...
在给定的示例中,我们看到使用了`Iterator`接口和`Iterable`接口来实现这一功能。下面将详细介绍这个示例中涉及的知识点。 1. **`Iterator`接口**:`Iterator`是Java集合框架的一部分,用于遍历集合中的元素。它...
在Java编程语言中,迭代器(Iterator)是一个至关重要的工具,它提供了一种高效且简洁的方式来遍历和访问集合中的元素,而无需暴露集合的内部结构。迭代器设计模式遵循了“访问者”模式的原则,使得代码更加灵活和可...
12. Iterator和Iterable接口:Iterator用于遍历集合元素,Iterable则是所有可迭代对象的父接口,例如for-each循环就是基于这两个接口实现的。 13. Optional类:Java 8引入的Optional类,用于表示可能不存在的值,...
迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...
Java中提供了两个相关的接口:Iterator和Iterable。Iterator接口定义了迭代器的基本方法,包括hasNext()、next()和remove()。hasNext()方法用于判断是否存在下一个对象元素,next()方法用于获取下一个对象元素,...
2. Iterator和Iterable接口:Iterator用于遍历集合中的元素,而Iterable接口使得类可以被for-each循环遍历。这两个接口是Java集合框架的重要组成部分,提供了访问和操作集合元素的标准方式。 3. Map接口和其实现类...
Java Iterator(迭代器)是Java集合框架中不可或缺的一部分,它为遍历集合提供了一种标准的方式,特别是对于ArrayList、HashSet等实现了Iterable接口的集合类。迭代器不是集合本身,而是一个独立的对象,允许程序员...
在Java中,所有实现了`Iterable`接口的类(如`Collection`接口的所有实现类)都可以返回一个`Iterator`对象来遍历其内部的元素。 ##### 2. 获取`Iterator`实例 获取`Iterator`实例的方法非常简单,只需调用实现了`...
这些容器类为数据存储提供了丰富的选择,同时,Iterator和Iterable接口让遍历变得简单。此外,作者还介绍了泛型在集合中的应用,以及Collections类提供的各种实用方法。 《Thinking in Java》第三版还涵盖了输入/...
书中会介绍它们的用法和区别。 - 运算符:涵盖赋值、比较、逻辑、位运算等各种运算符,并讨论它们在Java中的应用。 - 控制结构:包括条件语句(if-else)、循环(for、while、do-while)以及跳转语句(break、...