なぜIterator
インターフェースが拡張されないのですかIterable
?
メソッドはiterator()
単に を返すこともできますthis
。
これは意図的なものでしょうか、それとも Java の設計者の単なる見落としでしょうか?
次のようにイテレータ付きの for-each ループを使用できると便利です。
for(Object o : someContainer.listSomeObjects()) {
....
}
where はlistSomeObjects()
イテレータを返します。
ベストアンサー1
Iterable.iterator()
イテレータは状態を持ちます。2回呼び出すと、独立した反復子 - 少なくともほとんどの反復可能オブジェクトではそうです。明らかに、あなたのシナリオではそうではありません。
たとえば、通常は次のように記述できます。
public void iterateOver(Iterable<String> strings)
{
for (String x : strings)
{
System.out.println(x);
}
for (String x : strings)
{
System.out.println(x);
}
}
これにより、コレクションが 2 回印刷されるはずですが、このスキームでは、2 番目のループは常に即座に終了します。