流中元素的总和是否取最大值(0,x)?

时间:2018-09-12 23:46:29

标签: java java-8 java-stream

假设我有一个List<Double>,例如[2,4.3,-1.1]。我想对这些元素求和,同时删除所有负数(我想将每个数的最大值与0相对)。对于此示例,答案应为2 + 4.3 = 6.3

我想使用Java 8流来执行此操作,但是我一直坚持降低max(x,0)部分。有人有这样做的线索吗?

这是我到目前为止所拥有的:

scores.stream()
      .mapToDouble(i -> i.getValue())
      // max between the number and 0??
      .sum

1 个答案:

答案 0 :(得分:4)

.mapToDouble(i -> Math.max(i, 0))

您还可以使用过滤器执行此操作:

.filter(i -> i > 0)