什么是Iterable接口用于?

时间:2009-06-29 16:06:50

标签: java iterable

我是初学者,我无法理解Iterable界面的实际效果。

6 个答案:

答案 0 :(得分:44)

除了杰里米所说的,它的主要好处是它有一些语法糖:enhanced for-loop。如果你有一个Iterable<String>,你可以这样做:

for (String str : myIterable) {
    ...
}

美好而轻松,不是吗?创建Iterator<String>,检查hasNext()和调用str = getNext()的所有肮脏工作都是由编译器在幕后处理的。

由于大多数集合要么实现Iterable,要么有一个返回一个的视图(例如Map的{​​{1}}或keySet()),这使得对集合的处理更多更容易。

Iterable Javadoc提供了实施values()的完整列表。

答案 1 :(得分:12)

如果你有一个复杂的数据集,比如一棵树或一个螺旋队列(是的,我只是这样做了),但你不关心它是如何在内部构建的,你只想要逐个获取所有元素,你得到它来返回一个迭代器。

有问题的复杂对象,无论是树或队列,还是WombleBasket实现Iterable,并且可以返回可以使用Iterator方法查询的迭代器对象。

这样,您可以询问它是否为hasNext(),如果确实如此,则会获得next()项,而不必担心从树或其他地方获取它的位置。

答案 2 :(得分:5)

返回java.util.Iterator。它主要用于能够在增强型for循环中使用实现类型

List<Item> list = ...
for (Item i:list) {
 // use i
}

在引擎盖下,编译器调用list.iterator()并迭代它,在for循环中给出i

答案 3 :(得分:4)

接口的核心是一个类应该实现的方法列表。可迭代接口非常简单 - 只有一种方法可以实现:Iterator()。当一个类实现Iterable接口时,它告诉其他类你可以使用Iterator对象来迭代(即遍历)对象中的数据。

答案 4 :(得分:3)

迭代器基本上允许迭代任何Collection。

这也是使用Java for-each控制语句所需要的。

答案 5 :(得分:0)

Iterable 被定义为泛型类型。

Iterable ,其中 T 类型参数表示迭代器返回的元素类型。

实现此接口的对象允许它成为“foreach”语句的目标。 for-each 循环用于遍历数组、集合。

阅读更多 -:https://examples.javacodegeeks.com/iterable-java-example-java-lang-iterable-interface/