Манипулировать выводом в потоке java8 - PullRequest
0 голосов
/ 07 сентября 2018

Представьте, что у нас есть список из 3 объектов с полем минут в качестве значений: 5,5,7, 8

int sumOfFields = found.stream()
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .mapToInt(abc::getMinutes)
        .sum();

// will return 10

Но как я могу изменить свой вывод например вместо getMinutes я хочу вернуть собственное значение, например, 40

int sumOfFields = found.stream()
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .mapToInt(abc ->abc.getMinutes() = 40)  //this is pseudo code what I try to achive
        .sum();

// output should be 80.

1 Ответ

0 голосов
/ 07 сентября 2018

Не совсем уверен, почему люди не ответили на это, но, как указано в комментариях, вы можете следовать любому из подходов

int sumOfFields = found.stream()
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .mapToInt(abc -> 40) // map value to be returned as 40 
        .sum();

или вместо этого, поскольку вы заменяете все такие значения постоянным значением 40, вы также можете использовать count() и умножить его на постоянное значение.

int sumOfFields = (int) found.stream() // casting from long to int
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .count() * 40;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...