4

私はそれを読みました

    for (int i1 : A) {
    }

よりも良い

    for (int i1=0; i1 < A.length; i++) {
    }

しかし、最初のインデックス値にアクセスしたい場合は、2番目のものだけを使用する必要があります。

4

7 に答える 7

3

ウィキペディアは次のように述べています。

foreach ループは、通常、明示的なカウンターを維持しません。基本的に、 「これを x 回実行する」ではなく、 「このセット内のすべてにこれを実行する」と言います。これにより、off-by-one エラーの可能性が回避され、コードが読みやすくなります。

index を使用する場合は、新しいバージョンを使用することをお勧めします。

最初のインデックス値にアクセスしたい場合、何か意味がありますか

はい、できます

int index = 0;
for (int i1 : A) 
{
    // Your logic
    // index++;
}

繰り返しますが、お勧めしません。Enahanced for loopでインデックスが必要な場合は、ロジックを再考してください。

Java は強化された for ループを推奨しています:ソース(ページの最後の行を参照)

于 2012-10-30T05:47:30.773 に答える
0

これを使用するか、2番目のオプションを使用するのに最適

  int count = 0;
 for (int i1 : A) {
    print count;
    count ++;
    }
于 2012-10-30T05:43:26.973 に答える
0

上記のように、この同様の質問も見てください。Javaのfor-eachループの反復カウンターにアクセスする方法はありますか?

于 2012-10-30T05:44:45.117 に答える
0

2番目のものを使用する必要があります。他のオプションは、コレクションリストを次のように使用することです。
List list = Arrays.asList(int a[]); list.get(int index);

于 2012-10-30T05:45:41.483 に答える
0

最初のコードは、コレクションA内のすべてのアイテム/オブジェクトを調べると言いますが、最後のコードは、インデックスを調べると言います。from 0 to n, n=>size of A

通常の場合、両方が機能し、選択するものは通常、使用できるループスルーのAPIに基づいています。

最初のコードはHashMapで機能するか、配列を埋めません。このデータ構造があるとしましょう

A = [1,2,3,NULL,NULL,4,NULL,5]

最初のケースでは、既存の値のみをループすることができます。ただし、最後のケースでは、すべての要素をループする必要があります。

また、マップのような順序付けされていない、または明確に定義されたデータ構造には、すべての要素を通過することを保証するメソッドがありますが、明確に定義された順序ではありません。

于 2012-10-30T05:47:04.487 に答える
0

いいえ、できません。for-each は、count 変数がないため、(質問を引用すると) 優れていると見なされます。これは、プログラマーの観点から見れば、間違いを犯す場所が少なくなることを意味します。データを取得するのはプログラマの責任ではありません。Java は for each を使用してそれを行います。

カウンター変数が必要ないときはいつでも for-each を使用する傾向があります。カウントが必要な場合は、古いスタイルの for ループを使用する必要があります。

于 2012-10-30T10:09:50.507 に答える
0

いいえ、ありません。変数を宣言するだけです。その場合は、従来のものを使用することをお勧めします。

于 2012-10-30T05:41:49.233 に答える