• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Iteratorの用途)

Iteratorの用途とは?

このQ&Aのポイント
  • Iteratorとは、集合の要素を順番に取り出すためのオブジェクトです。
  • ArrayListやHashSetのメソッドを使用する場合とIteratorを使用する場合、要素を表示することは可能です。
  • しかし、特にIteratorでしかできない処理はなく、Iteratorを使用するかどうかは任意です。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

一言で言えば、反復処理に集中するためです。 反復子 (Iterator) を使わずにやろうとすると、「今、何番目のものを処理しているか」という情報を自分で管理しなければなりません。処理が単純なら問題はないのですが、「反復処理の途中である条件が満たされた場合は中断して別の処理を行い、その後別のメソッドで反復処理を再開する」というような状況だとちょっと面倒になります。 反復子を使うと、どこまで処理を進めたかは反復子が覚えていてくれるので、プログラムを書く側にとって負担が減ります。 またリスト (List) は各要素が番号で管理されているので「各要素を一つずつ取り出す」という処理も難しくありませんが、写像 (Map) や集合 (Set) のように、要素に番号がついていない (要素の順番という概念がない) 場合は、反復子なしでやろうとすると、一度中身を全部配列にコピーするしかありません。 しかし、プログラムの効率を考えると、反復処理のためにいちいち配列を用意してコピーするなんて事は避けたいのです。 また、LinkedList の場合、普通にループで一つずつ番号を指定して取り出すよりも、反復子を使って取り出したほうが格段に速くなります。というのも、反復子が反復処理に特化したやり方で要素を取り出してくれるからです。 他にもまだあるかもしれませんが、とりあえず反復子のメリットをいくつか挙げてみました。

kutu
質問者

お礼

まさに講師に回答してもらいたかった事です。 よく理解できました。 ありがとうございました。

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

>結局Iteratorというのは、何故存在するのですしょうか? この辺りはデザインパターンを学ぶと解決するかと思います。 デザインパターンを理解できているか否かでプログラマとしてのレベルはかなり変わってくると思いますので、暇があれば書籍を読んでみるといいと思います。

参考URL:
http://www.hyuki.com/dp/index.html
kutu
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう