È possibile che Java abbia condizioni?Java Foreach con una condizione
Per esempio,
for(Foo foo : foos && try == true)
{
//Do something
}
Esiste un equivalente a questo, in modo che posso mettere una condizione AND all'interno for
?
È possibile che Java abbia condizioni?Java Foreach con una condizione
Per esempio,
for(Foo foo : foos && try == true)
{
//Do something
}
Esiste un equivalente a questo, in modo che posso mettere una condizione AND all'interno for
?
No.
È possibile utilizzare invece un ciclo while.
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
...
}
probabilmente min^infinito minifica min. –
-1 provare è una parola chiave, si avrà errore del compilatore .. –
@NandKumarTekale - questo non è il problema di Nim; sta passando per quello che l'OP ha scritto. – JoshDM
No, foreach è appositamente progettato solo per l'iterazione tutti gli elementi di una matrice o di raccolta.
Se si desidera è possibile controllare le condizioni al suo interno e utilizzare interruzione parola chiave per uscire dal ciclo in mezzo.
No, non c'è niente del genere. Il "enhanced for loop" è un costrutto completamente separato che non fa altro che loppare attraverso l'iteratore restituito dal suo parametro Iterable
.
Che cosa si può fare è questo:
for(Foo foo : foos)
{
//Do something
if(!condition){
break;
}
}
ipotesi foreach non è poi così elegante. –
È uno strumento per un certo tipo di attività. – DerMike
@ TJ-: In realtà, direi che fare una cosa lo rende * più * elegante. Il ciclo C-like for che annulla iterazione, inizializzazione e condizioni arbitrariamente complesse e passaggi di iterazione insieme in un costrutto superpotente, solo per essere usato esattamente nello stesso modo in cui il 95% dei casi * è * orribilmente inelegante. –
In Java 8
, si può farlo. Per esempio:
foos.forEach(foo -> {
if(try) {
--your code--
}
});
Troppo facile fornire un -1 senza alcuna spiegazione. –
perché hai inserito la condizione all'interno del corpo del loop. In Java 8 la domanda originale piacerà: è possibile che Java 8 abbia condizioni? Ad esempio: 'foos.forEach (prova, foo -> {--il tuo codice-- });', dove 'try' è Predicato. – foal
La cosa più vicina si può ottenere è probabilmente quello di filtrare l'iterabile iniziale:
for(Foo foo : filter(foos)) {
//Do something
}
Dove il metodo del filtro restituisce un iterabile contenente solo gli elementi per i quali la sua condizione detiene. Ad esempio, con Guava si potrebbe scrivere il metodo del filtro in questo modo:
Iterable<String> filter(Iterable<String> foos) {
return Iterables.filter(foos,
input -> input.equals("whatever");
}
for-each non possono avere le condizioni, qui è l'equivalente di quello che hai chiesto:
Iterator<Foo> iterator = foos.iterator();
while(iterator.hasNext() && condition == true) {
//Do something
}
Per ulteriori informazioni si può prendere un guarda http://stackoverflow.com/a/3433775/197574 – DerMike
\ @anyone, per favore ping me quando una lib è disponibile. Grazie mille in anticipo! –