我是靠谱客的博主 单纯白昼,最近开发中收集的这篇文章主要介绍Java List集合Stream流多字段分组获取字段值和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

说明:实际业务开发中,从数据库中获取所有站点降水数据,需要对站点降水进行累加,根据站点进行分组,然后将分组之后的降水进行累加。下面的方法就是使用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流多字段分组获取字段值和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部