4

この次のループがあり、一度だけ実行したいと思います。どうやってやるの?

for (AnnotationData annotations : annotation)
4

4 に答える 4

9

一度実行されるループは、あまりループではありません。

が配列の場合annotations、を使用して最初の配列を取得しannotations[0]ます。の場合はList、実行しますannotations.get(0)。それ以外の場合は、を実行しますannotations.iterator().next()。コレクションに少なくとも1つの要素があるかどうかわからない場合は、最初にそれを確認してください。

for人々がそれらを見るとき、彼らは通常ループを期待するので、これはより明確になるでしょう。実際に、まあ、ループするもの。

于 2012-12-04T06:19:57.297 に答える
4

ただ抜け出せ!

for (AnnotationData annotation : annotations) {
    // do something with "annotation"
    break; // only execute loop body once
}


他の答えは、カウンターまたはフラグを使用しています!?最も単純なことを行うために何人かの人々がどれだけのコードを書いているのか、私を驚かすことは決してありません。通常、プログラマーが劣っているほど、より多くのコードを記述します。

編集:

一部のコメント提供者は、非ループバージョンでは「コードが少ない」または「行が少ない」と誤解しています。そのような主張は真実ではありません...ここに正確な非ループ等価コードがあります:

if (!annotations.isEmpty()) {
    AnnotationData annotation = annotations.get(0);
    // do something with "annotation"
}

これは同じ行数を使用しますが、23文字のコードが必要ですが、その意図はより強調されています。

于 2012-12-04T06:06:56.950 に答える
2

カウンターは必要ありません。break最後に次のように追加するだけです。

     for (AnnotationData annotations : annotation){
        //your all code
        break;
     }
于 2012-12-04T06:07:15.743 に答える
-1
int i=0;
for (AnnotationData annotations : annotation){
 if(i==1)
   {
    break;
   }
 i++;
}
于 2012-12-04T06:05:45.453 に答える