The HIRO Says

If you smell what The HIRO is cooking!!!

今更気づいたforループのMAX値

例えば String のリスト list を for ループで回したい場合。

よろしくない方法

この方法だと、ループの度にリストの size() メソッドを呼び出すことになるので、パフォーマンス上よろしくない。

    for (int i = 0; i < list.size(); i++) {

少し改善した方法

for ループの前にリストの size() メソッドをローカル変数に取っておく方法なら、ループの度に size() メソッドを呼ばなくて済む。
でも、ループでしか必要のない変数 max がループ後も残ってしまい使えるのは、よろしいとは言えない。

    int max = list.size();
    for (int i = 0; i < max; i++) {

さらに改善した方法

for 句の1つ目で、size() を取っておくことができる。
(昔書き方を間違えて、この方法はできないものとばかり思い込んでいた orz
 これが今日のブレイクスルー(´・ω・))

    for (int i = 0, max = list.size(); i < max; i++) {

おそらく最善の方法

アルゴリズムの解説書などを参考にすると、ループの MAX 値の変数名は「n」がよいらしい。

    for (int i = 0, n = list.size(); i < n; i++) {