迭代器和迭代之间有什么区别以及如何使用它们?

问题

我是Java新手,我真的很困惑迭代器和迭代。任何人都可以向我解释并举一些例子吗?


#1 热门回答(143 赞)

AnIterable是可以迭代的一系列元素的简单表示。它没有任何迭代状态,例如"当前元素"。相反,它有一个生成aIterator的方法。

AnIterator是具有迭代状态的对象。它允许你使用hasNext()检查它是否包含更多元素,并使用next()移动到下一个元素(如果有)。

通常,anIterable应该能够生成任意数量的validIterator


#2 热门回答(71 赞)

Iterable的实现是提供自身的Iterator的实现:

public interface Iterable<T>
{
    Iterator<T> iterator();
}

迭代器是一种简单的方法,允许一些人在没有赋值权限的情况下循环访问数据集合(虽然能够删除)。

public interface Iterator<E>
{
    boolean hasNext();
    E next();
    void remove();
}

SeeJavadoc


#3 热门回答(15 赞)

**Iterable:**可以迭代的接口。也就是说,有一个"让我第一件事,现在是下一件事,等等,直到我们用完为止"的概念。

**迭代器:**一个管理迭代迭代的接口。也就是说,它会跟踪我们在当前迭代中的位置,并知道下一个元素是什么以及如何获取它。

要使对象可迭代,需要发出一个Iterator对象。要强制执行此合同,将使用Iterable接口。它包含一个名为iterator()的方法,它返回Iterator。因此,任何实现Iterable的类都将返回一个Iterator。

public interface Collection<E> extends Iterable<E> {}

例如,任何收集。 Collection是一个表示一系列元素的容器的接口。像ArrayList,Vector这样的集合实现了Collection和Iterator。

Iterable的一个优点是,当你实现Iterable时,那些对象将获得对以下内容的支持:每个循环语法。