【发布时间】:2020-06-25 19:08:20
【问题描述】:
我试图弄清楚在使用stream 时如何计算列表中特定值的百分比。
我的对象getTag 可以取值G 或Y,我想计算G:s 在列表中的百分比。另一个对象是getDateTime,其形式为1946-01-12。
我有条件filter(weather -> !weather.getDateTime().isAfter(dateTo) && !weather.getDateTime().isBefore(dateFrom)),因为我只想要用户输入的两个日期之间的百分比。
所以每个 DateTime 值对应于G 或Y。我用Collectors.counting()计算了G和Y的频率,但是如何得到百分比呢?
Map<String, Long> percentage = weatherData.stream()
.filter(weather -> !weather.getDateTime().isAfter(dateTo) && !weather.getDateTime().isBefore(dateFrom))
.collect(Collectors.groupingBy(Weather::getTag, Collectors.counting()));
【问题讨论】:
标签: java hashmap java-stream percentage collectors