Java中的每个循环都有这样的事吗?

时间:2009-06-30 22:22:38

标签: java while-loop

如果有这样的事情,我会想象语法是

while(Integer item : group<Integer>; item > 5)
{
    //do something
}

只是想知道是否有这样的东西或模仿这种方式?

5 个答案:

答案 0 :(得分:7)

不,最接近的是:

for (Integer item : group<Integer>)
{
    if (item <= 5)
    {
        break;
    }
    //do something
}

当然,如果Java得到简洁的闭包,那么编写类似.NET的Enumerable.TakeWhile方法来包装可迭代的(在这种情况下为group)并使条件提前完成是合理的。停止了。

当然,即使是现在也是可行的,但这样做的代码会很难看。作为参考,C#看起来像这样:

foreach (int item in group.TakeWhile(x => x > 5))
{
    // do something
}

也许Java会在一段时间内得到很好的闭包......

答案 1 :(得分:3)

for(Integer item : group<Integer>)
{
    if (item <= 5)
         break;
    //do something
}

这是我能想到的。

答案 2 :(得分:3)

作为参考,Jon Skeet目前在Java中的第二个答案,对于某些interface Predicate,看起来像是:

for (int item : takeWhile(group, new Predicate<Integer>() {
    public boolean contains(Integer x) {
        return x > 5;
    }
}) {
    // do something
}

这种语法很糟糕,而不是语义。

答案 3 :(得分:0)

在Java中while是基于条件的。您正在寻找的是foreach构造。

答案 4 :(得分:0)

在Java中没有像while-each这样的东西,但是我们已经得到了 - 每个都非常棒。