首页 > 解决方案 > 使用 java8 通过 Hashmap 进行迭代时返回或收集值

问题描述

以下是检查某些条件和更新变量的传统代码。

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

如何使用 java8 流或 lambda 实现相同的目标?

标签: javajava-8hashmap

解决方案


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<>();

推荐阅读