Java foreach有可能有条件吗?
例如,
for(Foo foo : foos && try == true)
{
//Do something
}
是否有与此相同的内容,以便我可以在for
内添加AND条件?
答案 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--
}
});