Question

If there were such a thing I would imagine the syntax to be something along the lines of

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

Just wondering if there was something like this or a way to imitate this?

Was it helpful?

Solution

No, the closest would be:

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

Of course if Java ever gets concise closures, it would be reasonable to write something like .NET's Enumerable.TakeWhile method to wrap the iterable (group in this case) and make it finish early if the condition stops holding.

That's doable even now of course, but the code to do it would be ugly. For reference, the C# would look like this:

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

Maybe Java will get nice closures some time...

OTHER TIPS

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

This is what I can think of.

For reference, Jon Skeet's second answer in Java would currently, for some interface Predicate, look something like:

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

It's the syntax that sucks, not the semantics.

In Java while is condition based. What you are looking for is the foreach construct.

There is no such thing like while-each in Java but we've got for -each which is so great.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top