パブリック インターフェース集合{ // 呼び出しイテレータイテレータインターフェイスはクラスのインスタンスを生成する方法であって実現 パブリック 抽象イテレータイテレータを(); }
パブリック インターフェイスイテレータ{ // 次の要素の次の要素のhasNext方法及び取得方法があるか否かを判断する // 次の要素がある場合ので、真のブール型へのhasNextリターンを返し、コレクションの末尾への綾振り即ち存在しない場合、バックfalseに パブリック 抽象 ブールのhasNext(); // オブジェクトの戻り型、さらに次の処理要素に反復子を移動意味要素のセットを返しショー。 // Iteratorインターフェイスが唯一のメソッドの名前を知っているので、エンド・プロセスに次に何をすべきか迷っ暗黙的に、我々はの役割を理解するために、Iteratorインターフェイスを実装するクラス検討する必要があり 、パブリック 抽象、次のオブジェクトを() }
パブリック クラスブック{ プライベート 最終的な文字列名; 公共ブック{(文字列名) この .nameの= ;名前 } // getNameメソッドで取得した本の名前として、ブックの外部名は、クラスのコンストラクタを呼び出すときブックBookクラスを初期化しています予約クラスに渡されたパラメータ パブリック文字列のgetName(){ 戻り名; } }
//は、処理クラスを設定し、インターフェイス集約iteratorメソッド彼の実装 パブリック クラス本棚に実装集計{ // ブックフィールドの定義を、彼はブックの配列で、配列のサイズは、インスタンス本棚の生成時に指定されている // 理由プライベートフィールドは、ブックに設定されている外部変えないようにすることである 民間 最終帳[]本を; プライベート int型 0 =最終; 公共の本棚(int型MAXSIZE){ これは .books = 新しい新しいブック[MAXSIZE]; } パブリックブックgetBookAt(int型のインデックス) { 戻り書籍[索引]; } 公共 ボイドappendBooke(ブックブック){ これは .books [最終] = 書籍; 最後 ++ ; } 公共 INT のgetLength(){ 戻り最後。 } @Override 公共イテレータイテレータ(){ 戻り 新しい BookShelfIterator(この)。 } }
// そのため、役割Iteratorを再生する必要性から、それはインタフェースを実装 パブリック クラスを BookShelfIterator 実装するIterator { // 本棚フィールドを横断するようにBookShelfIterator夏示し、インデックスフィールドは、反復子が現在ブック添字を指していることを示し // コンストラクタは受信されます例本棚フィールドに格納された本棚には、インデックスを0に初期化される プライベート 最終本棚本棚; プライベート int型のインデックスを、 公共BookShelfIterator(本棚本棚){ この .bookShelf = 本棚; この .INDEX = 0 ; } @Override // のhasNextイテレータメソッドがインターフェイスで宣言された方法であり、この方法には次の本、長いリターン・トゥーレ、ノーリターン偽はありません決定します。 //そこ次の本を判断して、棚のインデックスのみを決定するために本の中で(bookShelf.getLength()の戻り値)を本の合計数を比較する必要が パブリック ブールのhasNext(){ リターン指数< bookShelf.getLength(); } / * * * * @return * / @Override // 次に方法が本(本例)反復子が現在指して返します。そして、次の本へのイテレータをしましょう。第行う可変戻りの簿価を削除し、インデックスは本の背を指しせ パブリックオブジェクト次に(){ ブックブック = bookShelf.getBookAt(インデックス); インデックス ++ ; 返す帳; } }
パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ // bookShelf.iterator()、適切な棚のトラバースそれイテレータ例を得た状態であれば、棚上の書籍のようにit.hasNext部()、ですそれは停止しません。it.hasNextプログラムで()図書トラバース 本棚本棚= 新しい新しい本棚(4。); bookShelf.appendBooke(新新「80日間世界一周」ブック()); bookShelf.appendBooke(新しい新しいブック(「聖書」)); bookShelf.appendBooke(新しい新しいブック(「シンデレラ」)); bookShelf.appendBooke(新しい新しいブック(「あしながおじさんは、近代的な提供」)); イテレータIT= bookShelf.iterator()。 一方、(it.hasNext()){ ブックブック = (書籍)it.next(); System.out.println(book.getName())。 } } }