Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
我做了一些PoC来比较两种类型的实现交互列表的性能。
第一个是使用纯Java,使用
第二种方法是这样使用
显然,使用
我对在我的当前项目中强制在团队中使用
我的问题是,是否存在无法应用此规则的情况(需要使用lambda),我的意思是,如果存在无法使用
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
我做了一些PoC来比较两种类型的实现交互列表的性能。
第一个是使用纯Java,使用
foreach
并使用'if'检查每个元素。第二种方法是这样使用
lambda
:int max1 = lists1.stream()
.mapToInt(i -> i)
.max()
.getAsInt();
long finalCount = lists1.stream()
.filter(p -> p.intValue() == max1)
.count();
显然,使用
lambda
比使用经典Java foreach
快5倍。我对在我的当前项目中强制在团队中使用
lambda
(例如,禁止使用经典java foreach
的规则)感到非常有信心。我的问题是,是否存在无法应用此规则的情况(需要使用lambda),我的意思是,如果存在无法使用
lambda
处理集合的异常。 最佳答案
绝对的第一件事-对Java代码进行基准测试是complicated。
含义:除非您已经遵循了先前的链接中概述的规则,否则您的测量是虚假的机会很高。
除此之外:lambda确实使用了invokedynamic字节码指令,这反过来又可以提高性能。
但这绝不支持对整个团队实施这样的政策。
真正的答案是:教育您的团队有关流和lambda的利弊。使他们能够在何时以及如何利用这些概念方面做出明智的决定。确保人们了解自己在做什么,而不是给他们提供要遵循的命令的清单。