logo

Java の For-each ループ

前提条件: Java での意思決定
For-each は、Java5 で導入された for ループ、while ループ、do-while ループのような別の配列走査手法です。

  • キーワードから始まります のために 通常の for ループと同様です。
  • ループ カウンター変数を宣言して初期化する代わりに、配列の基本型と同じ型の変数を宣言し、その後にコロン、その後に配列名を続けます。
  • ループ本体では、インデックス付きの配列要素を使用する代わりに、作成したループ変数を使用できます。
  • 一般的に、配列または Collections クラス (ArrayList など) を反復するために使用されます。

構文:

for (type var : array) { statements using var; }>

for each ループを使用した簡単なプログラム:



ジャワ

カジャル・アガルワル




Java入力文字列
/*package whatever //do not write package name here */> > import> java.io.*;> > class> Easy> > {> > >public> static> void> main(String[] args)> > >{> > >// array declaration> > >int> ar[] = {>10>,>50>,>60>,>80>,>90> };> > >for> (>int> element : ar)> > >System.out.print(element +>' '>);> >}> }>

>

>

出力

10 50 60 80 90>

上記の構文は次と同等です。

maxSoFar) { maxSoFar = 数値; maxSoFar を返します。 } } 出力 最高スコアは 132 です。 for-each ループの意思決定の制限 配列を変更する場合、For-each ループは適切ではありません : for (int num :marks) { // num のみを変更し、配列要素は変更しません数値 = 数値*2; 2. For-each ループは、index を追跡しません。したがって、For-Each ループを使用して配列インデックスを取得することはできません。 for (int num :numbers) { if (num == target) { return ???; // num のインデックスがわかりません } } 3. For-each は単一ステップで配列を順方向に反復するだけです // for-each ループに変換することはできません for (int i=numbers.length-1; i>0 ; i--) { System.out.println(numbers[i]); 4. For-each は 2 つの意思決定ステートメントを同時に処理できません // for-each ループに簡単に変換できません for (int i=0; i 5. For-each には、単純な反復に対してパフォーマンスのオーバーヘッドもあります: Java / *package anything // ここにはパッケージ名を記述しないでください */ import java.io.*; import java.util.*; public static void main (String[] args) { List list = new ArrayList();開始時間; 長い終了時間; (int i = 0;<1000000; i++) { list.add(i); } // Type 1 startTime = Calendar.getInstance().getTimeInMillis(); for (int i : list) { int a = i; } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('For each loop :: ' + (endTime - startTime) + ' ms'); // Type 2 startTime = Calendar.getInstance().getTimeInMillis(); for (int j = 0; j int a = list.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Using collection.size() :: ' + (endTime - startTime) + ' ms'); // Type 3 startTime = Calendar.getInstance().getTimeInMillis(); int size = list.size(); for (int j = 0; j int a = list.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('By calculating collection.size() first :: ' + (endTime - startTime) + ' ms'); // Type 4 startTime = Calendar.getInstance().getTimeInMillis(); for(int j = list.size()-1; j>= 0; j--) { int a = list.get(j); endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Using [int j = list.size(); j> size ; j--] :: ' + (endTime - startTime) + ' ms'); } } // このコードは Ayush Choudhary によって提供されています @gfg(code_ayush) 出力 各ループ:: 45 ミリ秒 collection.size() を使用:: 11 ミリ秒 最初に collection.size() を計算することで:: 13 ミリ秒 [int j = リスト.サイズ(); j> サイズ ; j--] :: 15 ミリ秒 関連記事: C++ の For-each と Java イテレータの比較 vs Java の For-each>>'