java - 从 lambda 表达式中的方法返回值

标签 java lambda java-8

我正在尝试找出如何从 lambda 表达式返回方法值:

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;
}

不过,在lambda表达式中使用return关键字似乎会显式返回到lambda函数本身。是否有某种方法可以中断或强制返回整个方法?

最佳答案

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

没有。至少,除非您抛出异常,否则不会。

基本上,这不是 forEach 的目的。您可以编写一个接受函数的方法,该函数将返回 null 表示“继续”,返回非 null 表示“停止,并将其作为结果”...但是该方法 isn' t forEach.

您使用 lambda 表达式的事实在这里真的很偶然。想象一下,您只是调用 forEach 并传入一些参数 - 如果该调用使您的 findMissingNumber 方法返回(没有一个异常(exception)),而 findMissingNumber 方法本身没有返回语句?

关于java - 从 lambda 表达式中的方法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24704791/

相关文章:

java - 当我按 # 拆分字符串的 ArrayList 时,最后一个字段不正确

java - 如何在 Eclipse 之外的项目中使用 java Eclipse 抽象语法树? (即不是 Eclipse 插件)

java - 在列表中分配 ASCII 字符 A-Z

c++ - Lambda 构造性能和静态 lambda?

python - 为什么 lambda 函数中的括号会导致 Python 3 上的语法错误?

java - 如何为实例成员编写compareTo?

java - 如果流包含多个逗号分隔值,则拆分流

java - 如何将数组列表的相等性与现代 Java 进行比较?

java - 将列表中每个元素的出现次数乘以 4

java - 拆分 java.util.stream.Stream