使用流计算值的百分比

问题描述 投票:0回答:1

我试图弄清楚如何使用stream来计算列表中特定值的百分比。

我的对象getTag可以取值GY,我想计算列表中G:s的百分比。另一个对象是getDateTime,其形式为1946-01-12

我有条件filter(weather -> !weather.getDateTime().isAfter(dateTo) && !weather.getDateTime().isBefore(dateFrom)),因为我只想要用户输入的两个日期之间的百分比。

因此,每个DateTime值对应于GY。我使用Collectors.counting()来计算GY的频率,但是如何获得百分比?

Map<String, Long> percentage = weatherData.stream()
        .filter(weather -> !weather.getDateTime().isAfter(dateTo) && !weather.getDateTime().isBefore(dateFrom))
        .collect(Collectors.groupingBy(Weather::getTag, Collectors.counting()));
java stream hashmap collectors
1个回答
0
投票

如果将您关心的项目(“ G”)映射为1,其他都映射为0,则平均值是流中“ G”的百分比。

© www.soinside.com 2019 - 2024. All rights reserved.