如何在具有流的Map中对值进行求和? [英] How to sum values in a Map with a stream?

查看:652
本文介绍了如何在具有流的Map中对值进行求和?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  public static< T extends Number> T getSum(final Map< String,T> data){
T sum = 0;
for(String key:data.keySet())
sum + = data.get(key);
回报金额;





$ b

这段代码实际上并不编译,因为0不能分配给T类型,但您明白了。

解决方案

您可以这样做:

  int sum = data.values()。stream()。mapToInt(Number :: intValue).sum(); 


I want the equivalent of this with a stream:

public static <T extends Number> T getSum(final Map<String, T> data) {
    T sum = 0;
    for (String key: data.keySet())
        sum += data.get(key);
    return sum;
}

This code doesn't actually compile because 0 cannot be assigned to type T, but you get the idea.

解决方案

You can do this:

int sum = data.values().stream().mapToInt(Number::intValue).sum();

这篇关于如何在具有流的Map中对值进行求和?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆