我做了一些PoCs来比较两种实现交互列表的性能。
第一种方法是使用纯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处理集合。
发布于 2017-04-12 03:05:01
发布于 2017-04-12 01:51:41
Lambda+streams明显更快?事实并非如此。
这在很大程度上取决于情况,但总的来说,Java 7循环比流更快,因为运行的次数较少。
回答您的问题:“不”;您不应该强制要求始终使用lambda,因为:
对于并行流,处理可以更快,但只有当流足够大以证明管理流的开销是合理的。经验法则是,如果您至少有1000个元素要处理,请尝试一个流。
https://stackoverflow.com/questions/43358852
复制相似问题