Lambda在项目开发中需要

Chr*_*eco 0 java lambda java-8 java-stream

我做了一些PoC来比较两种类型的实现交互列表的性能.

第一个是使用纯java,foreach并使用'if'检查每个元素.

第二种方法是这样使用lambda:

int max1 =  lists1.stream()
                  .mapToInt(i -> i)
                  .max()
                  .getAsInt();

long finalCount = lists1.stream()
                        .filter(p -> p.intValue() == max1)
                        .count();
Run Code Online (Sandbox Code Playgroud)

显然使用lambda比使用经典java快5倍foreach.

我非常有信心强制要求lambda在我当前的项目中使用我的团队,就像规则一样,禁止使用经典java foreach.

我的问题是,如果存在一些我无法应用此规则的场景(需要lambda),我的意思是,如果存在异常,我无法使用lambda集合.

Boh*_*ian 6

Lambda +流明显更快?不是这样.

它在很大程度上取决于具体情况,但一般来说,Java 7循环比流更快,因为它的持续时间较少.

回答你的问题:"不"; 你不应该强制要求总是使用lambdas,因为:

  • 这是一种风格的东西; 两种形式都可以接受
  • 当实现为流时,一些循环变成火车残骸
  • 你的理由毫无根据
  • 可读性几乎总是胜过"性能"

对于并行流,处理可以更快,但仅当流足够大以证明管理流的开销时.根据经验,如果您要处理至少1000个元素,请尝试使用流.