【发布时间】:2019-05-30 02:33:35
【问题描述】:
我正在阅读一些关于 Java 8 中提供的 lambda 表达式的博客和答案。
我无法弄清楚,单元 lambda 表达式是否有任何运行时优势?
我从不同的来源复制了以下文本,这让我很困惑。
一个答案是——
"lambdas 不会创建新的范围,它们与 封闭块/环境"
在一个博客中-
“使用 lambda 表达式没有运行时的好处,所以我会 谨慎使用它,因为我不介意多写几行 代码。”
来自另一个博客 -
“还有一个好处 lambda 表达式的顺序和并行执行 通过在方法中传递行为来支持"
所以对我来说有很多困惑。 请帮我解决这个问题,这样我就可以避免在深入研究这些东西之前记住错误的方法。
我已经运行了以下代码,我可以说以下代码中的 lambda 表达式只是替代匿名内部类及其在主线程上运行。
List<Integer> list = new ArrayList<>();
list.add(12);
list.forEach(V -> {
System.out.println(V);
});
我们是否降低了时间复杂度或空间复杂度?
【问题讨论】:
-
这可能会让你觉得有些道理stackoverflow.com/questions/34585444/…
-
仅供参考,
V -> { System.out.println(V); }可以简化为V -> System.out.println(V),基本等同于System.out::println。 -
如果您有新问题,ask 一个新问题,而不是重新定义一个超过一年的问题。时间和空间复杂度与您在最后一句话之前写的任何内容无关。