イテレータパターンとは?
いてれーたーぱたーん
イテレータパターンとは、コレクションの内部構造を隠したまま要素を順番に走査できるようにするデザインパターンです。
イテレータパターン(Iterator Pattern)とは、GoFのデザインパターンのひとつで、リスト・配列・ツリーなどさまざまなコレクション(集合体)の内部実装を利用者に公開せず、統一されたインターフェースを通じて要素を順番に取り出せるようにする設計パターンです。「カーソル(Cursor)パターン」とも呼ばれます。
従来、コレクションの要素を走査するにはその内部実装(配列のインデックス・リンクリストのポインタなど)を知る必要がありました。イテレータパターンでは、コレクション側が「イテレータ」オブジェクトを提供し、利用者はイテレータのメソッド(hasNext() / next()など)を呼び出すだけで要素を順に取得できます。
イテレータパターンの主な利点は次のとおりです。
- コレクションの実装変更(配列からリストへの切り替えなど)が利用側に影響しない
- 同一のループ構文で異なるデータ構造を統一的に走査できる
- 複数のイテレータを同時に持ち、独立した走査ができる
多くのプログラミング言語でイテレータは標準的に組み込まれています。Javaの Iterator<T> インターフェース、Pythonのイテラブル・ジェネレータ、C++の範囲ベースforループ、JavaScriptの Symbol.iterator プロトコルなどがその例です。特にPythonの for x in collection 構文はイテレータパターンを言語レベルで組み込んだ代表例です。さらに遅延評価と組み合わせることで、大量データを効率的に処理するストリーム処理にも応用されます。
使い方・例文
Javaの for (String item : list) や Pythonの for item in collection という構文は、イテレータパターンを言語仕様レベルで実装したもので、リスト・セット・マップなどを内部構造を意識せず均一に走査できます。
この用語をシェア
最終更新: