【发布时间】:2020-09-09 19:51:09
【问题描述】:
我正在尝试使用 Java 8 流创建单个 CarData 对象,该对象由来自 getCars 的列表中所有 CarData 字段的平均值组成;
CarData = new CarData();
CarData.getBodyWeight returns Integer
CarData.getShellWeight returns Integer
List<CarData> carData = carResults.getCars();
IntSummaryStatistics averageBodyWeight = carData.stream()
.mapToInt((x) -> x.getBodyWeight())
.summaryStatistics();
averageBodyWeight.getAverage();
IntSummaryStatistics averageShellWeight = carData.stream()
.mapToInt((x) -> x.getShellWeight())
.summaryStatistics();
getShellWeight.getAverage();
我不想在我的最终返回结果中将这些重新组合在一起。
从视觉上看,这是我的清单
getCars() : [
{CarData: { getBodyWeight=10, getShellWeight=3 } }
{CarData: { getBodyWeight=6, getShellWeight=5 } }
{CarData: { getBodyWeight=8, getShellWeight=19 } }
]
我试图实现的输出是一个对象,它具有我指定的每个字段的平均值。不确定我是否需要使用 Collectors.averagingInt 或 IntSummaryStatistics 的一些组合来实现这一点。对于这些技术中的任何一种,跨一个字段都很容易做到,只是不确定在使用多个整数字段时我缺少什么。
{CarData: { getBodyWeight=8, getShellWeight=9 } }
【问题讨论】:
-
我认为流不提供此功能。您可以创建一个不同的收集器思想来创建平均 CarData 对象。
标签: java java-8 java-stream