带有条件的Java Foreach

时间:2012-04-11 10:53:20

标签: java foreach

Java foreach有可能有条件吗?

例如,

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

是否有与此相同的内容,以便我可以在for内添加AND条件?

6 个答案:

答案 0 :(得分:21)

没有

您可以使用while循环。

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

答案 1 :(得分:11)

不,没有这样的。 “增强for循环”是一个完全独立的构造,除了lopp通过其Iterable参数返回的迭代器之外什么都不做。

你可以做的是:

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

答案 2 :(得分:8)

不, foreach 专门用于迭代数组或集合的所有元素。

如果您需要,可以查看其中的条件,并使用 break 关键字在中间退出循环。

答案 3 :(得分:1)

你能得到的最接近的东西可能是过滤掉最初的可迭代:

\'

filter方法返回一个iterable,其中只包含条件所适用的元素。例如,使用Guava,您可以像这样编写过滤器方法:

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

答案 4 :(得分:1)

for-each不能有条件,这里等同于你要求的内容:

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

答案 5 :(得分:0)

Java 8中,可以执行此操作。例如:

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