【初心者】Java質問・相談スレ23【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0422デフォルトの名無しさん
NGNGでも、処理中にサイズ変更がないことが前提じゃないのかな?
そうでなけりゃ質問者の2つ目の例はありえないよ。
通常、ランダムアクセスのList実装に対する
コレクションイテレートの好ましいイディオムは...
for (Iterator i=list.iterator(); i.hasNext();) {
// 処理
}
なんだから。
>>414
ちなみに僕は、array.size()がループ内での処理中に
サイズ変更が絶対に起こりえないと保障でき、かつ、
array.size()をこのループの繰り返し回数を導出する
ためだけに利用するのであれば、次のような方法が最善である
と信じています。Javaは「Write Once, Run Anywhere」
(1回書けば、いろんな環境で動く)なんていっちゃってるしw
結局、最適化は実装依存なわけだし。
for (int i=0, n=array.size(); i<n; i++) {
//処理
}
僕は別にベンチマークしたわけじゃないから効果の程はわからないけど。
質問者さんの記述した2つのループとの違いは、
forループのステートメントにカウンタ変数とループの
上限値変数の2つの変数を宣言し、初期化しています。
これによって、パフォーマンスだけではなく、変数スコープ
についても最適なものになります。
■ このスレッドは過去ログ倉庫に格納されています