>>634
Iteratorで実装することの最大のメリット?
それはパフォーマンスではないな。

おいらが思うIterator最大のメリットは
数え上げに対する責任の一切を依頼できることだな。

通常Iteratorを取得して
next()を実行していけばすべてのデータを走査するよね。
で、配列やListの場合もIteratorを使わなくてもこれは
簡単に実現できる。しかもRandomAccessなListなら
for (int i=0,n=list.size(); i<n; i++) ...
とした方が高速だね。

じゃあ、あるリストがあって特定の要素だけイテレート
して処理したい場合はどうする?

 for文の中でその特定の要素の場合だけ処理するようにする?
  それがいくつもあったら大変だな。
 じゃぁ、ユーティリティクラス作ってstaticメソッドにしておく?
  最悪だな。無駄なクラスができるわけだ。独立性も落ちるな。
 Listがその特定のパターンの取得方法を提供する?
  その特定パターンの走査を提供するのがIteratorの役目だな。

そんなときに配列でもなく、Listでもなく、Iteratorにしておけば
イテレーションに対する責任はそのIteratorにあるため、
イテレーションに対するコードの修正が発生してもそのIteratorを
修正するだけでよい。
このため、利用者側では特別な理由がある場合を除いて
イテレーションに対するコードに影響がなくて済む。