java - 使用 Java 8 获取 Two+ HashMap 的平均值

标签 java java-8 hashmap java-stream

我有两个 HashMap<String, Integer>我怎样才能得到这些值的平均值?

HashMap<String, Integer> map1 = ...
map1.put("str1", 7);
map1.put("str2", 4);

HashMap<String, Integer> map2 = ...
map2.put("str1", 3);
map2.put("str2", 2);

预期的输出是:

("str1") = 5;
("str2") = 3;

我能够按如下方式检索两个 map 的总和:

map2.forEach((k, v) -> map1.merge(k, v, Integer::sum)); 

但是如何使用 Java 8 检索两个 map 的平均值?

更新:

应@的要求,我发布了大部分代码:

HashMap<String, HashMap<String, Double>> map;

        HashMap<String, Double> map2 = new HashMap<String, Double>();
        map = func1(); 
        map = func2();
        map = func3();

        for (Entry<String, HashMap<String, Double>> entry : map.entrySet()) {
            String key = entry.getKey();
            HashMap<String, Double> mp = map.get(key);
            mp.forEach((k, v) -> map2.merge(k, v, (t, u) -> (t + u) / 2));

            for (Entry<String, Double> entry1 : mp.entrySet()) {

                StringfieldName = entry1.getKey();
                Double score= entry1.getValue();
                System.out.println(fieldName.toString() + " = " + score);

            }
        }
        return map2;
    }

最佳答案

你试过这样做吗:

map1.forEach((k, v) -> map1.merge(k, v, (t, u) -> (t + u) / 2));

关于java - 使用 Java 8 获取 Two+ HashMap 的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43809659/

相关文章:

java - Libgdx 序列化

java - 从 Java bean 到 Web 服务的 SSL 连接问题

JAVA为什么arrayCopy是系统调用?

java - Java中的有限生成流-如何创建一个?

Java从同一对象的不同HashMap中获取最终计算结果

java - 从 hashmap 中检索数组

java - HSQLDB - 改变表模式

java - 如果父类不是,java 8 方法引用可以被垃圾收集吗?

java - 如何使用 Files.walk()... 根据条件获取文件图?

hashmap - Go 中映射的内存开销