我有一个散列图Map<String,List<Double>> incomeList
,String
密钥和List
Double
作为值,保留了这些数据:
seattle [50000.0 40000.0 30000.0]
sanFrancisco [60000.0 100000.0]
我想将城市及其平均收入存储在新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));
但是我收到了这个错误:
非静态方法无法从静态上下文中引用
有没有人知道如何使用Stream
s来实现这一点?
答案 0 :(得分:4)
您应该将原始值(List<Double>
)映射到将其收集到输出Map
中时的平均值:
Map<String,Double> avarage =
incomeList.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e-> e.getValue()
.stream()
.mapToDouble(Double::doubleValue)
.average()
.getAsDouble()));