- ベストアンサー
Iteratorの用途とは?
- Iteratorとは、集合の要素を順番に取り出すためのオブジェクトです。
- ArrayListやHashSetのメソッドを使用する場合とIteratorを使用する場合、要素を表示することは可能です。
- しかし、特にIteratorでしかできない処理はなく、Iteratorを使用するかどうかは任意です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一言で言えば、反復処理に集中するためです。 反復子 (Iterator) を使わずにやろうとすると、「今、何番目のものを処理しているか」という情報を自分で管理しなければなりません。処理が単純なら問題はないのですが、「反復処理の途中である条件が満たされた場合は中断して別の処理を行い、その後別のメソッドで反復処理を再開する」というような状況だとちょっと面倒になります。 反復子を使うと、どこまで処理を進めたかは反復子が覚えていてくれるので、プログラムを書く側にとって負担が減ります。 またリスト (List) は各要素が番号で管理されているので「各要素を一つずつ取り出す」という処理も難しくありませんが、写像 (Map) や集合 (Set) のように、要素に番号がついていない (要素の順番という概念がない) 場合は、反復子なしでやろうとすると、一度中身を全部配列にコピーするしかありません。 しかし、プログラムの効率を考えると、反復処理のためにいちいち配列を用意してコピーするなんて事は避けたいのです。 また、LinkedList の場合、普通にループで一つずつ番号を指定して取り出すよりも、反復子を使って取り出したほうが格段に速くなります。というのも、反復子が反復処理に特化したやり方で要素を取り出してくれるからです。 他にもまだあるかもしれませんが、とりあえず反復子のメリットをいくつか挙げてみました。
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
>結局Iteratorというのは、何故存在するのですしょうか? この辺りはデザインパターンを学ぶと解決するかと思います。 デザインパターンを理解できているか否かでプログラマとしてのレベルはかなり変わってくると思いますので、暇があれば書籍を読んでみるといいと思います。
お礼
ありがとうございました。
お礼
まさに講師に回答してもらいたかった事です。 よく理解できました。 ありがとうございました。