java - 使用 java8 通过 Hashmap 进行迭代时返回或收集值
问题描述
以下是检查某些条件和更新变量的传统代码。
HashMap<Integer,Integer> testMap= new HashMap<>();
int pair = 0;
for(Integer value: testMap.values()){
pair = pair+value/2;
}
如何使用 java8 流或 lambda 实现相同的目标?
解决方案
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<>();
推荐阅读
- python - 在 DocuSign 签名过程中添加第二个收件人
- algorithm - 将给定整数转换为自定义二进制表示的算法
- hadoop - 蜂巢:如何在不更新的情况下处理 scd 类型 2
- razor - 如何从引导多选下拉列表中获取选定的值?
- c++ - 将一个类传递给另一个类的构造函数时,C++没有默认构造函数错误
- acumatica - 订单行帐户选择器选择不显示在字段中
- typescript - 如何指定必须是另一种类型的类型对象?
- neo4j - 即使值不同,也要合并边缘?
- python - 如何将重复的行添加到 Pandas DF?
- r - 你能创建一个使用前缀和后缀调用的 R 函数(像括号一样操作)吗?