【发布时间】:2018-10-11 14:02:55
【问题描述】:
需要过滤适合其字段的某些情况的所有对象。 假设对象有几个字段:
class Price {
int first;
int second;
String third;
}
和价格流:
Stream<Price> streamPrices;
什么是最好的选择:
1.
streamPrices
.parallel()
.filter(p0->p0.first> 10)
.filter(p1->p1.second <30)
.filter(p2-> p2.third.length() > 8);
2.
streamPrices
.parallel()
.filter(p-> (p.first > 10)
&& (p->p.second <30)
&& (p-> p.third.length() > 8)
);
我使用了 JMH 框架,但没有得出明确的结论。
【问题讨论】:
-
我认为第一个更具可读性,这是您在实际遇到性能问题之前唯一应该考虑的事情。
-
第二个示例是有效的 Java 语法吗?我认为您不能将谓词与逻辑和运算符结合起来。我认为您想删除 lamdas 并仅使用布尔表达式。
标签: java parallel-processing java-stream