2009-06-30 14 views

risposta

7

No, il più vicino sarebbe:

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

Naturalmente se Java ottiene mai chiusure sintetiche, sarebbe ragionevole per scrivere qualcosa come il metodo di .NET Enumerable.TakeWhile per avvolgere il iterabile (group in questo caso) e fallo finire presto se la condizione si ferma.

Ovviamente è fattibile anche ora, ma il codice per farlo sarebbe brutto. Per riferimento, il C# sarebbe simile a questa:

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

Forse Java avranno belle chiusure po 'di tempo ...

+0

Hehe. Batti di nuovo qualche secondo. btw ... Penso che tu abbia inteso utilizzare "for" invece di "while" nella prima riga del tuo snippet di codice. –

+0

Hm. Non lo riconosco mentre la sintassi. – ojrac

+0

Doh! Sì, per davvero. c'n'p error –

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

Questo è quello che mi viene in mente.

+0

Esattamente il mio suggerimento, tranne per il fatto che la tua condizione sembra essere sbagliata per me. –

+0

Sembra giusto, non è vero? – WowtaH

+0

grazie Jon Skeet, risolto –

3

Per riferimento, secondo la risposta di Jon Skeet in Java sarebbe attualmente, per alcuni interface Predicate, cercare qualcosa Mi piace:

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

È la sintassi che fa schifo, non la semantica.

+0

grazie mi stavo chiedendo, quella sintassi fa schifo sicuramente –

+1

+1 per succhiacenza – voyager

0

In Java while basato su condizioni. Quello che stai cercando è il costrutto foreach.

0

Non esiste una cosa del genere mentre - ognuna in Java, ma abbiamo per -each che è così grande.

Problemi correlati