6

如果有这样的事情,我会想象语法类似于

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

只是想知道是否有类似的东西或模仿它的方法?

4

5 回答 5

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会在某个时候得到很好的闭包......

于 2009-06-30T22:25:05.123 回答
3
for(Integer item : group<Integer>)
{
    if (item <= 5)
         break;
    //do something
}

这是我能想到的。

于 2009-06-30T22:24:58.993 回答
3

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

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

糟糕的是语法,而不是语义。

于 2009-06-30T22:44:35.960 回答
0

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

于 2013-03-26T01:49:33.133 回答
0

Java 中没有像 while-each 这样的东西,但我们有 for -each 非常棒。

于 2017-03-14T17:04:12.000 回答