私はそれを読みました
for (int i1 : A) {
}
よりも良い
for (int i1=0; i1 < A.length; i++) {
}
しかし、最初のインデックス値にアクセスしたい場合は、2番目のものだけを使用する必要があります。
ウィキペディアは次のように述べています。
foreach ループは、通常、明示的なカウンターを維持しません。基本的に、 「これを x 回実行する」ではなく、 「このセット内のすべてにこれを実行する」と言います。これにより、off-by-one エラーの可能性が回避され、コードが読みやすくなります。
index を使用する場合は、新しいバージョンを使用することをお勧めします。
最初のインデックス値にアクセスしたい場合、何か意味がありますか
はい、できます
int index = 0;
for (int i1 : A)
{
// Your logic
// index++;
}
繰り返しますが、お勧めしません。Enahanced for loopでインデックスが必要な場合は、ロジックを再考してください。
Java は強化された for ループを推奨しています:ソース(ページの最後の行を参照)
これを使用するか、2番目のオプションを使用するのに最適
int count = 0;
for (int i1 : A) {
print count;
count ++;
}
上記のように、この同様の質問も見てください。Javaのfor-eachループの反復カウンターにアクセスする方法はありますか?
2番目のものを使用する必要があります。他のオプションは、コレクションリストを次のように使用することです。
List list = Arrays.asList(int a[]);
list.get(int index);
最初のコードは、コレクションA内のすべてのアイテム/オブジェクトを調べると言いますが、最後のコードは、インデックスを調べると言います。from 0 to n, n=>size of A
通常の場合、両方が機能し、選択するものは通常、使用できるループスルーのAPIに基づいています。
最初のコードはHashMapで機能するか、配列を埋めません。このデータ構造があるとしましょう
A = [1,2,3,NULL,NULL,4,NULL,5]
最初のケースでは、既存の値のみをループすることができます。ただし、最後のケースでは、すべての要素をループする必要があります。
また、マップのような順序付けされていない、または明確に定義されたデータ構造には、すべての要素を通過することを保証するメソッドがありますが、明確に定義された順序ではありません。
いいえ、できません。for-each は、count 変数がないため、(質問を引用すると) 優れていると見なされます。これは、プログラマーの観点から見れば、間違いを犯す場所が少なくなることを意味します。データを取得するのはプログラマの責任ではありません。Java は for each を使用してそれを行います。
カウンター変数が必要ないときはいつでも for-each を使用する傾向があります。カウントが必要な場合は、古いスタイルの for ループを使用する必要があります。
いいえ、ありません。変数を宣言するだけです。その場合は、従来のものを使用することをお勧めします。