【初心者】Java質問・相談スレ24【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0655デフォルトの名無しさん
NGNGIteratorで実装することの最大のメリット?
それはパフォーマンスではないな。
おいらが思う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を
修正するだけでよい。
このため、利用者側では特別な理由がある場合を除いて
イテレーションに対するコードに影響がなくて済む。
■ このスレッドは過去ログ倉庫に格納されています