IteratorとIterableの違い



Difference Between Iterator



Javaのコレクションクラスに触れたばかりで、Collectionからソースコードを段階的に調べたところ、IterableとIteratorの2つのインターフェイスが最初は少し混乱していることがわかりました。 Iterableインターフェイスから継承してIterator()メソッドをIterableに戻すにはどうすればよいですか?次の図は、2つの関係を明確に示しています。マインドノードは描画に使用されます。

反復可能なイテレータ



私が最初にそれを見たとき、最初の質問は次のとおりでした:なぜCollectionインターフェースはIteratorインターフェースではなくIterableインターフェースから継承する必要があるのですか?スタックオーバーフローについて多くの回答を見つけました。3つのポイントをまとめました。コレクションコレクションクラスに不慣れで、ここでも混乱している学生を支援したいと思います。おおよそ3つの理由があります:

1. jdk 1.5以降、Iterableが導入され、Forerステートメント(拡張forループ)はIterableクラスを使用する必要があります。



2. Java設計者は、CollectionがIteratorインターフェースではなくIterableから継承するようにします。最初に明確にする必要があるのは、反復可能なサブクラスCollection、CollectionサブクラスList、Setなどです。これらは、データ構造またはデータを配置する場所です。 Iteratorは、反復ロジックとデータ構造が分離されるように、反復ロジックを定義するオブジェクトです。これには、複数の反復ロジックを1つのデータ構造に実装できるという利点があります。

3.さらに重要な点は、IterableのIterator()メソッドが呼び出されるたびに、Iteratorオブジェクトが最初から返され、各Iteratorオブジェクトが相互に干渉しないため、データ構造の複数のトラバーサルを次の場所で実行できることです。同時に。 。これは、各ループが独立したIteratorオブジェクトを使用するためです。

転載:https://www.cnblogs.com/ttylcc/p/5475890.html