我想知道一种方式是否比另一方式更有效。是否有更好的java 8方式来执行以下操作?
java 8方式
BigDecimal total = entries.parallelStream()
.map(poec -> BigDecimal.valueOf(poec.getQuantity().longValue() * poec.getAdjustedUnitPrice().doubleValue()))
.collect(Collectors.toList()).stream()
.reduce(BigDecimal.ZERO, BigDecimal::add);
普通Java 7方式
for (final EntryConsumed poec : entries) {
total = total.add(BigDecimal.valueOf(poec.getQuantity().longValue() * poec.getAdjustedUnitPrice().doubleValue()));
}
答案 0 :(得分:1)
您的Java 8解决方案中有一些冗余代码。它可以简化为:
BigDecimal total = entries.parallelStream()
.map(poec -> BigDecimal.valueOf(poec.getQuantity().longValue() * poec.getAdjustedUnitPrice().doubleValue()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
至于性能,您可以通过对两种解决方案进行基准测试来自行计算。