代码之家  ›  专栏  ›  技术社区  ›  SnG

取max(0,x)时求流中元素的和?

  •  2
  • SnG  · 技术社区  · 7 年前

    List<Double> 例如[2,4.3,-1.1]。我想对这些元素求和,同时去掉所有的负数(我想取每个数字的最大值vs 0)。对于这个例子,答案应该是2+4.3=6.3

    我想使用java8流来实现这一点,但是我一直在努力降低max(x,0)部分。有人知道这件事吗?

    到目前为止,我的情况是:

    scores.stream()
          .mapToDouble(i -> i.getValue())
          // max between the number and 0??
          .sum
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Alex - GlassEditor.com    7 年前
    .mapToDouble(i -> Math.max(i, 0))
    

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

    .filter(i -> i > 0)