Суммировать элементы в потоке, принимая max (0, x)? - PullRequest
0 голосов
/ 13 сентября 2018

Предположим, у меня есть 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 голосов
/ 13 сентября 2018
.mapToDouble(i -> Math.max(i, 0))

Вы также можете сделать это с фильтром:

.filter(i -> i > 0)
...