2009-06-30 1 views

答えて

7

いいえ、最も近い次のようになります。

もちろん
for (Integer item : group<Integer>) 
{ 
    if (item <= 5) 
    { 
     break; 
    } 
    //do something 
} 

Javaは、これまで簡潔クロージャを得れば、(この場合はgroup)を反復可能をラップする.NETのEnumerable.TakeWhileメソッドのようなものを書くことが合理的であると状態が保たれなくなると早く終了させる。

これは今でも実行可能ですが、それを行うコードは醜いでしょう。参考のため、C#が次のようになります。

foreach (int item in group.TakeWhile(x => x > 5)) 
{ 
    // do something 
} 

たぶんJavaは素敵な閉鎖にいくつかの時間を取得します...参考のため

+0

Hehe。もう一度私を叩いてください。 btw ...私はあなたのコードスニペットの最初の行に 'while'の代わりに 'for'を使うことを意図したと思います。 –

+0

Hm。私は構文の間それを認識しません。 – ojrac

+0

Doh!はい、確かに。 c'n'pエラー –

3
for(Integer item : group<Integer>) 
{ 
    if (item <= 5) 
     break; 
    //do something 
} 

これは私が考えることです。

+0

あなたの状態が私にとってまったく間違っているように見えることを除いて、まさに私の提案です。 –

+0

そうですね。 – WowtaH

+0

ありがとうJon Skeet、それを修正しました –

3

、Javaでジョンスキートの二答えは現在、いくつかのinterface Predicateのため、になります次のようになります。

for (int item : takeWhile(group, new Predicate<Integer>() { 
    public boolean contains(Integer x) { 
     return x > 5; 
    } 
}) { 
    // do something 
} 

セマンティクスではなく構文です。

+0

私はそれについて疑問に思ってくれてありがとう、その構文は間違いなく吸う –

+1

+1 suckiness – voyager

0

Javaの場合whileは状態に基づいています。お探しのものはforeachです。

0

Javaではwhile-eachのようなものはありませんが、私たちはそのために非常に優れています。

関連する問題