概述
说明:实际业务开发中,从数据库中获取所有站点降水数据,需要对站点降水进行累加,根据站点进行分组,然后将分组之后的降水进行累加。下面的方法就是使用Stream流进行站点分组,获取分组之后降水累加。
1、业务代码:
public List<AtstationDTO> getTimeRangeRainfall(Long startTime, Long endTime) {
List<AtstationDTO> rainfalls = new ArrayList<>();
List<AtstationDTO> stations = new ArrayList<>();
List<String> tableNames = CommonTableName.calcTimeRangeToTableNames(DateUtils.timestampToDate(startTime), DateUtils.timestampToDate(endTime), "data_atstation_all", "base");
for (String tableName : tableNames)
stations.addAll(atstationMapper.selectRainfallByTime(tableName, startTime, endTime));
stations.parallelStream().collect(Collectors.groupingBy((station) -> new AtstationDTO(station.getStationIdC(), station.getStationName(), station.getLon(), station.getLat()), Collectors.summarizingDouble(AtstationDTO::getMinuteRainfall))).forEach((key, value) -> {
key.setTimestamp(endTime);
key.setMinuteRainfall((float)value.getSum());
rainfalls.add(key);
});
return rainfalls;
}
核心代码:
stations.parallelStream().collect(Collectors.groupingBy((station) -> new AtstationDTO(station.getStationIdC(), station.getStationName(), station.getLon(), station.getLat()), Collectors.summarizingDouble(AtstationDTO::getMinuteRainfall))).forEach((key, value) -> {
key.setTimestamp(endTime);
key.setMinuteRainfall((float)value.getSum());
rainfalls.add(key);
});
最后
以上就是单纯白昼为你收集整理的Java List集合Stream流多字段分组获取字段值和的全部内容,希望文章能够帮你解决Java List集合Stream流多字段分组获取字段值和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复