Подтвердить что ты не робот

Java Foreach с условием

Возможно ли, чтобы Java foreach имел условия?

Например,

for(Foo foo : foos && try == true)
{
//Do something
}

Есть ли эквивалент этого, так что я могу поместить условие AND внутри for?

4b9b3361

Ответ 1

Нет.

Вместо этого вы можете использовать цикл while.

Iterator iterator = list.iterator();
while(iterator.hasNext()) {
    ...
}

Ответ 2

Нет, нет ничего подобного. "Улучшенный цикл" - это полностью отдельная конструкция, которая ничего не делает, кроме lopp через итератор, возвращаемый его параметром Iterable.

Что вы можете сделать, так это:

for(Foo foo : foos)
{
   //Do something
   if(!condition){
       break;
   }
}

Ответ 3

Нет, foreach специально разработан только для итерации всех элементов массива или коллекции.

Если вы хотите, вы можете проверить состояние внутри него и использовать ключевое слово break для выхода из цикла в середине.

Ответ 4

для каждого не может быть условий, вот эквивалент того, что вы просили:

Iterator<Foo> iterator = foos.iterator();
while(iterator.hasNext() &&  condition == true) {
    //Do something
}

Ответ 5

В Java 8 вы можете сделать это. Например:

foos.forEach(foo -> {
        if(try) {
          --your code--
        }
    });

Ответ 6

Ближайшая вещь, которую вы можете получить, вероятно, для фильтрации начального итерации:

for(Foo foo : filter(foos)) {
    //Do something
}  

Если метод фильтра возвращает итерабель, содержащий только те элементы, для которых выполняется ваше условие. Например, с помощью Guava вы можете написать метод фильтра следующим образом:

Iterable<String> filter(Iterable<String> foos) {
    return Iterables.filter(foos, 
            input -> input.equals("whatever");
}