Y at-il une telle chose comme un certain temps chaque boucle en Java?
-
21-08-2019 - |
Question
S'il y avait une telle chose que j'imagine la syntaxe d'être quelque chose le long des lignes de
while(Integer item : group<Integer>; item > 5)
{
//do something
}
Je me demandais s'il y avait quelque chose comme ça ou une façon d'imiter cela?
La solution
Non, le plus proche serait:
for (Integer item : group<Integer>)
{
if (item <= 5)
{
break;
}
//do something
}
Bien sûr, si Java obtient toujours la fermeture concises, il serait raisonnable d'écrire quelque chose comme de .NET Enumerable.TakeWhile
procédé pour envelopper le iterable (group
dans ce cas) et le faire terminer tôt si la condition cesse de maintien.
C'est faisable, même maintenant, bien sûr, mais le code pour le faire serait laid. Pour référence, le C # ressemblerait à ceci:
foreach (int item in group.TakeWhile(x => x > 5))
{
// do something
}
Peut-être que Java obtenir de belles fermetures un peu de temps ...
Autres conseils
for(Integer item : group<Integer>)
{
if (item <= 5)
break;
//do something
}
est ce que je peux penser.
Pour référence, la deuxième réponse de Jon Skeet en Java serait actuellement, pour certains interface Predicate
, ressembler à:
for (int item : takeWhile(group, new Predicate<Integer>() {
public boolean contains(Integer x) {
return x > 5;
}
}) {
// do something
}
Il est la syntaxe qui suce, pas la sémantique.
En Java est basée sur l'état while
. Ce que vous cherchez est la construction foreach
.
Il n'y a pas une telle chose comme tout-chacun en Java, mais nous avons pour -Chaque qui est si grand.