書くか、書かないか、だけを問われれば、「書く」と答えます。
二重ループを書くかどうか、というのは、結果であって、そもそものところは、
メソッドの振る舞いを決まるときに、ループを意識させるかどうか、なのだと思います。
言い換えれば、クラス設計に、どれだけ心血を注いでいるかの、結果だと。
二重ループが適切なのかどうかは、内側のループだけに着目すれば良いと思います。
というか、そのループは必要なのか、という観点です。
例えば、極端な例として、複数のものからひとつを見つけて、何かをする場合。
List list = target.getList(...); Iterator i = list.iterator(); while (i.hasNext()) { Item item = i.next(); if (item ...) { ... break; } }
なのか、
Item item = target.findItem(...); if (list != null) { ... }
なのか。
target が複数あると、最初に書いた方は、二重ループになっちゃいますよね。
じゃあ、二重ループは駄目なのか、って話ですけど、探索方向が一次元に収まらなければ、多重ループになるのは必然です。
例えば、画像のビットマップがあって、特定のピクセルを探して処理するような場合には、横と縦の二重ループになるのは、当然ですよね。
for (y = 0; y < image.sizeY() ; ++y) { for (x = 0; x < image.sizeX() ; ++x) { ... } } }
教条的に、二重ループを嫌って、横方向の1ラインの探索を、別のメソッドに隠蔽するのは、ちょっとやり過ぎな感じがします。
for (y = 0; y < image.sizeY() ; ++y) { image.searchLine(...); } }