Возможно ли, чтобы Java foreach имел условия?
Например,
for(Foo foo : foos && try == true)
{
//Do something
}
Есть ли эквивалент этого, так что я могу поместить условие AND внутри for
?
Возможно ли, чтобы Java foreach имел условия?
Например,
for(Foo foo : foos && try == true)
{
//Do something
}
Есть ли эквивалент этого, так что я могу поместить условие AND внутри for
?
Нет.
Вместо этого вы можете использовать цикл while.
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
...
}
Нет, нет ничего подобного. "Улучшенный цикл" - это полностью отдельная конструкция, которая ничего не делает, кроме lopp через итератор, возвращаемый его параметром Iterable
.
Что вы можете сделать, так это:
for(Foo foo : foos)
{
//Do something
if(!condition){
break;
}
}
Нет, foreach специально разработан только для итерации всех элементов массива или коллекции.
Если вы хотите, вы можете проверить состояние внутри него и использовать ключевое слово break для выхода из цикла в середине.
для каждого не может быть условий, вот эквивалент того, что вы просили:
Iterator<Foo> iterator = foos.iterator();
while(iterator.hasNext() && condition == true) {
//Do something
}
В Java 8
вы можете сделать это. Например:
foos.forEach(foo -> {
if(try) {
--your code--
}
});
Ближайшая вещь, которую вы можете получить, вероятно, для фильтрации начального итерации:
for(Foo foo : filter(foos)) {
//Do something
}
Если метод фильтра возвращает итерабель, содержащий только те элементы, для которых выполняется ваше условие. Например, с помощью Guava вы можете написать метод фильтра следующим образом:
Iterable<String> filter(Iterable<String> foos) {
return Iterables.filter(foos,
input -> input.equals("whatever");
}