Iterable<E>
にありjava.lang
ますIterator<E>
が、にありjava.util
ます。これには正当な理由がありますか、それともこれは単に悪いデザインのアーティファクトですか?
Iterable<E>
が良いのはを提供することだけなので、奇妙に思えIterator<E>
ます。
編集:1つの潜在的な理由は、(その後)新しく導入されたfor-eachループのためです。私の質問は、それらは同等ですか?
for(Object o : collection)
...
vs
for( Iterator iter = collection.iterator(); iter.hasNext(); ) {
o = iter.next();
...
もしそうなら、コンパイラが構造java.util
を使用するためにとにかくインポートしなければならないので、それでも2つのクラスが異なるパッケージにある理由を説明していませんIterator
。