Java 如何使用流获取列表映射值的平均值?

Java 如何使用流获取列表映射值的平均值?,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个hashmapMap incomeList,其中String键和List的Double作为值,包含以下数据: seattle [50000.0 40000.0 30000.0] sanFrancisco [60000.0 100000.0] 我想将城市及其平均收入存储在newHashMap中,以便最终结果如下: seattle 40000.0 sanFrancisco 80000.0 我正在使用以下代码创建此地图: Map<String,Double> avarage =

我有一个hashmap
Map incomeList
,其中
String
键和
List
Double
作为值,包含以下数据:

seattle [50000.0 40000.0 30000.0]
sanFrancisco [60000.0 100000.0]
我想将城市及其平均收入存储在new
HashMap
中,以便最终结果如下:

seattle 40000.0
sanFrancisco 80000.0
我正在使用以下代码创建此地图:

Map<String,Double> avarage = incomeList.entrySet().stream()
         .map(e -> e.getValue().stream().mapToDouble(Double::doubleValue).average())
         .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
Map avarage=incomeList.entrySet().stream()
.map(e->e.getValue().stream().mapToDouble(Double::doubleValue).average())
.collect(Collectors.toMap(条目::getKey,条目::getValue));
但我得到了这个错误:

无法从静态上下文引用非静态方法


有人知道我如何使用
s使其工作吗?

您应该在将原始值(
列表
)收集到输出中时将其映射到平均值
映射

Map<String,Double> avarage = 
    incomeList.entrySet()
              .stream()
              .collect(Collectors.toMap(Map.Entry::getKey,
                                        e-> e.getValue()
                                             .stream()
                                             .mapToDouble(Double::doubleValue)
                                             .average()
                                             .getAsDouble()));
Map avarage=
incomeList.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey、,
e->e.getValue()
.stream()
.mapToDouble(双精度::双精度值)
.average()
.getAsDouble());

映射后的流包含什么?不是
Entry
实例,因此
Entry::getKey
Entry::getValue
不起作用。