Java 如何使用流获取列表映射值的平均值?
我有一个hashmapJava 如何使用流获取列表映射值的平均值?,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 =
Map 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 = 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
不起作用。