【问题标题】:Java 8 get the HashMap values count [closed]Java 8 获取 HashMap 值计数 [关闭]
【发布时间】:2019-03-09 02:04:17
【问题描述】:

众所周知,map中的元素如下:

map.entrySet().stream().filter(x -> x.getValue() > 0 ).count(); // get map elements size which contain values > 0

但我要做的是计算元素 x values

有没有办法计算map 中的元素values

【问题讨论】:

  • map.entrySet().stream().reduce(0,(sum,x)-> sum+x.getValue());map.entrySet().stream().mapToLong(x -> x.getValue()).sum();?
  • 与您的说法相反,您提供的示例代码不计算键。
  • @kichik 是的,谢谢,这就是我需要的。
  • 你能添加一个输入和输出的例子吗?
  • @user207421 无论我得到什么答案。

标签: java java-8 hashmap java-stream


【解决方案1】:

您可以使用reduce()mapToInt()sum()。您可以使用mapToInt() 提取所需的值流,然后使用sum() 将它们全部加起来。

import java.util.Map;
import java.util.HashMap;

class Main {
  public static void main(String[] args) {
    Map<String, Integer> map = new HashMap();
    map.put("a", 12);
    map.put("b", 3);
    map.put("c", 24);
    System.out.println(map.entrySet().stream().filter(x -> x.getValue() > 0).mapToInt(x -> x.getValue()).sum());
  }
}

【讨论】:

  • 按照 OP 的要求,除了计算总和之外,与 counting 完全不同。但也许这真的是他们想要的,就像他们在 cmets 中所说的那样。目前我对实际被问到的内容感到很困惑。
  • 谢谢,我们也可以使用方法参考mapToInt(Map.Entry::getValue).sum()
猜你喜欢
  • 2015-01-25
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多