Returning a value from a method within a lambda expression

java, java-8, lambda

Solution

Is there some type of way to break or force a return for the entire method?

No. At least, not unless you throw an exception.

Basically, that's not what `forEach` is meant for. You could write a method which accepted a function which would return `null` for "keep going" and non-null for "stop, and make this the result"... but that method isn't `forEach`.

The fact that you're using a lambda expression is really incidental here. Imagine you were just calling `forEach` and passing in some argument - wouldn't it be really weird if that call made your `findMissingNumber` method return (without an exception), without the `findMissingNumber` method itself having the return statement?

Problem

I'm trying to figure out how to return a method value from a lambda expression: ``` public int findMissingNumber(Collection<Integer> ints) { Single<Integer> start = new Single<>(1); ints.stream().mapToInt(Integer::valueOf).parallel().forEach(i -> { if (i != start.setValue(start.getValue() + 1)) { //return here } }); return -1; } ``` However, it seems that using the `return` keyword in the lambda expression will explicitly return to the lambda function itself. Is there some type of way to break or force a return for the entire method?

Original source