Java8获取HashMap值计数

Java8获取HashMap值计数,java,java-8,hashmap,java-stream,Java,Java 8,Hashmap,Java Stream,众所周知,您可以按如下方式计算地图中的元素: map.entrySet().stream().filter(x -> x.getValue() > 0 ).count(); // get map elements size which contain values > 0 但是我要做的是计算元素x的值 是否有方法计算映射中的元素值?您可以使用reduce或mapToInt和sum。您可以使用mapToInt提取所需的值流,然后使用sum将所有值相加 map.entrySet.

众所周知,您可以按如下方式计算地图中的元素:

map.entrySet().stream().filter(x -> x.getValue() > 0 ).count(); // get map elements size which contain values > 0
但是我要做的是计算元素x的值

是否有方法计算映射中的元素值?

您可以使用reduce或mapToInt和sum。您可以使用mapToInt提取所需的值流,然后使用sum将所有值相加


map.entrySet.stream.reduce0,sum,x->sum+x.getValue;或者map.entrySet.stream.mapToLongx->x.getValue.sum;?与您的说法相反,您提供的示例代码不计算键数。@kichik是的,谢谢,这正是我需要的。您能添加一个输入和输出都有一定帮助的示例吗clear@user207421无论我得到什么答案。除了计算一个和,就像这样,与OP要求的计数完全不同。但也许这真的是他们想要的,就像他们在评论中所说的那样。我现在很困惑到底要问什么。谢谢,我们也可以使用方法引用来代替mapToIntMap.Entry::getValue.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());
  }
}