java - 计算 Java 中 HashMap 中 List<Double> 的均值

标签 java math java-8 hashmap java-stream

给定一个从名称到数字列表的映射。

我想使用 Java 8 流 API 计算每个名称的平均值。

Map<String, List<Double>> NameToQuaters = new HashMap<>();

Map<String, Double> NameToMean = ?

最佳答案

你需要这样的东西:

Map<String, Double> nameToMean = nameToQuaters.entrySet()
        .stream()
        .collect(Collectors.toMap(
                // the key is the same
                Map.Entry::getKey,
                // for the value of the key, you can calculate the average like so
                e -> e.getValue().stream().mapToDouble(Double::doubleValue).average().getAsDouble())
        );
    }

或者您可以创建一个计算平均值并将其返回的方法,例如:

public Double average(List<Double> values) {
    return values.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
}

那么你的代码可以是:

Map<String, Double> nameToMean = nameToQuaters.entrySet()
        .stream()
        .collect(Collectors.toMap(Map.Entry::getKey, e -> average(e.getValue())) );

关于java - 计算 Java 中 HashMap 中 List<Double> 的均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52080705/

相关文章:

c++ - 动态规划 : Count how many ascending subsets exists in a set

python程序贝塞尔曲线函数

java - Java 6 的 JaxWS Web 服务客户端在 Java 8 中不起作用

java - 使用 Java 代码终止/停止应用程序

java - Selenium 服务器 "Not Found"

java - 我如何在java中选择哪个端口可以免费用于ServerSocket或Socket?

java - 如何使用 java 8 在超时的情况下调用另一个函数内的通用函数?

Java 使用 Selenium 等待页面加载

matlab - 在Matlab中计算第一类合流超几何函数

java - 使用 Stream 从二维整数数组中查找奇数