Возврат или сбор значения во время итерации по Hashmap с использованием java8 - PullRequest
0 голосов
/ 31 декабря 2018

Ниже приведен традиционный код для проверки некоторых условий и обновления переменной.

HashMap<Integer,Integer> testMap= new HashMap<>();
int pair = 0;
for(Integer value: testMap.values()){
        pair = pair+value/2;
}

Каким образом можно добиться того же с помощью потоков java8 или лямбд?

1 Ответ

0 голосов
/ 31 декабря 2018

stream значения Map, преобразуйте их, затем sum()

int pair = testMap.values().stream().mapToInt(i -> i / 2).sum();

Чтобы сделать его немного похожим на ваш исходный код, вы можете использовать reduce()операция:

int pair = testMap.values()
                  .stream()
                  .reduce(0, (p, i) -> p + i / 2);

В основном это начинается со значения 0 («идентичность»), а затем передает результат применения функции сокращения в качестве входных данных, наряду с текущим значением, к каждому значению по очереди.


Программа PS для интерфейса:

Map<Integer, Integer> testMap = new HashMap<>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...