Java中有两个不同的接口用于迭代,它们很重要,Iterable
和Iterator
。他们每个人都有不同的目的。
可迭代
当事情实现了这个接口,这意味着它可以重复的。
List<String> elements = ... ; // List is an instance of Iterable
for (String element : elements)
System.out.println(element);
凡是是Iterable
一个实例可以在for-each循环使用:因为Java提供了捷径,用于遍历东西使用for-each循环实现Iterable
这对我们来说是有益的。如果你有自己的自定义类,它实现Iterable
,那么你可以使用在换每个以及:
MyDeque<String> elements = ... ;
for (String element : elements)
System.out.println(element);
这给我们带来...
迭代
这个接口实际上是如何进行迭代。的for-each循环编译成这样的:
MyDeque<String> elements = ... ;
for (Iterator<String> $iter = elements.iterator(); $iter.hasNext();) {
String element = $iter.next();
System.out.println(element);
}
这段代码是功能等效的for-each上方。 hasNext()
是继续条件(我有更多的东西给你吗?)和next()
实际上给你的下一个元素,或抛出NoSuchElementException
,如果我们没有其他的东西。
让你的自定义实现Iterable
的目的只是为了让你可以使用类似for
循环的东西遍历你的双端队列中的元素。它的Iterator
实现是让你实际上做那个迭代。
当你实现一个接口时,你必须实现它的方法。你能澄清你在这方面的疑问吗? iteratior()应该每次调用它时都会返回一个新的迭代器。 – 2014-10-01 17:59:00
您必须创建一个实现'Iterator- '的实例并在iterator()方法中返回它。 –
Eran
2014-10-01 17:59:03
接口是一个'contract',它指定了一些方法及其行为。为了实现一个接口,你的类必须绑定到那个契约,并提供那些应该按预期工作的方法。 – SJuan76 2014-10-01 18:00:08