-2

単純な Java for ループを考えてみましょう。

for (int x = 0; x < bigArray.size(); x++ ) {
     Someobject object = (Someobject) bigArray.get(x);
      process(object);
 }

private void   process(Someobject object) {
  Someobject newobject = moreProcessing(object);
  bigArray.add(newobject);
 }

私の観察では、追加のオブジェクトを bigArray の最後に追加していて、bigArray が絶えず大きくなっているにもかかわらず、for ループが終了します。これは、for ループが始まる前に JRE がテスト条件 (この場合は x < bigArray.size()) の値を修正し、この値を更新しないためでしょうか?

4

2 に答える 2

0

OPで私が目にする唯一の問題は、空bigArrayのタイプListの場合、ループ内で呼び出しprocessて要素を追加してを増やす必要があるsizeため、ループが終了することです。そのため、forループの条件はそのtrue時点になります。 リストが空でない場合、は常に最新の長さと比較されます。つまり、 で追加されたオブジェクトが含まれます。タイプ だと思いますsize0
x < bigArray.size()process
bigArrayjava.util.List

于 2013-05-02T20:54:46.970 に答える
0

ほとんどの場合、テスト条件は各反復の開始前に評価されます。

詳細はこちら

于 2013-05-02T20:54:53.100 に答える