我有一个带有简单Runner.class实体的地图列表:
List<Map<String, Runner>> times,例如:
{
"pedro": [
{ lap=1, time=00:01:16.11 },
{ lap=2, time=00:00:42.45 },
{ lap=3, time=00:00:58.23 }
],
"huan": [
{ lap=1, time=00:00:48.33 },
{ lap=2, time=00:00:41.21 }
]
"gomez": [
{ lap=1, time=00:01:02.42 },
{ lap=2, time=00:01:12.31 },
{ lap=3, time=00:01:58.14 },
{ lap=3, time=00:00:55.41 }
]
}这是我的跑步课:
public class Runner {
private Integer lap;
private LocalTime time;
// Getters and setters...
}我需要得到一张统计图,就像lambda summaryStatistics()所做的那样,显示每个跑步者的最小、最大和平均时间,如下所示:
Map<String, DoubleSummaryStatistics> statsMap,这样我就可以迭代它并使用getMin()、getAverage()和getMax()方法.但我不知道如何处理LocalTime?
发布于 2019-11-13 03:23:48
如评论中所建议的那样,进行这一转变的方法之一可以是:
public Map<String, DoubleSummaryStatistics> createStats(Map<String, List<Runner>> times) {
return times.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e ->e.getValue().stream()
.map(Runner::getTime)
.mapToDouble(LocalTime::toSecondOfDay) // inverse while extrating summary details
.summaryStatistics()));
}https://stackoverflow.com/questions/58825554
复制相似问题