多个List 合并变成一个List+一个List 根据某个字段相等的另一个字段相加,并排序变成新的List

java 复制代码
List<CurveTimeAndValueDomain> curves = new ArrayList<>();
        for (int i = 0; i < columnNames.size(); i++){
            if (columnNames.get(i).equals(PlantConstant.TENDOWNFX) || columnNames.get(i).equals(PlantConstant.TENDOWNQP)) {
                //10千伏以下 数据 进行缓慢处理
                curveTimeAndValueDomains = gently(belongDay, columnNames.get(i));
            }else{
                //一个一个场站加
                curveTimeAndValueDomains = curveManagerCommonMapper.selectSinglePlantPowerDay2(belongDay, columnNames.get(i), belongDay.substring(0, 4));
            }
            if(!Objects.isNull(curveTimeAndValueDomains)){
                for (CurveTimeAndValueDomain curve:curveTimeAndValueDomains){
                    curves.add(curve);
                }
            }
        }

第一步:将多个List 相加

java 复制代码
for (CurveTimeAndValueDomain curve:curveTimeAndValueDomains){
                    curves.add(curve);
                }

第二步:将加起来的List 中:time 相同的value值相加

java 复制代码
//将曲线中 time 相同的 value 相加 并 去重
        List<CurveTimeAndValueDomain>  newCurve = merge(curves);

public static List<CurveTimeAndValueDomain> merge(List<CurveTimeAndValueDomain> curves){
        Map<String,CurveTimeAndValueDomain> map = new HashMap<>();
        curves.stream().forEach(curve ->{
            CurveTimeAndValueDomain last = map.get(curve.getTime());
            if (null != last){
                if(!Objects.isNull(last.getValue())){
                    curve.setValue(curve.getValue().add(last.getValue()));
                }
            }
            map.put(curve.getTime(),curve);
        });
        return map.values().stream().collect(Collectors.toList());
    }

第三步:将新的到的newCurve List 排序

java 复制代码
//按照time 进行排序
        newCurve.sort((curve1,curve2)->{
            Integer time1 = Integer.parseInt(curve1.getTime().replace(":",""));
            Integer time2 = Integer.parseInt(curve2.getTime().replace(":",""));
            return time1.compareTo(time2);
        });
相关推荐
biubiuibiu4 分钟前
选择适合的硬盘:固态与机械硬盘的对比与推荐
c++·算法
深蓝轨迹5 分钟前
IDEA 中 Spring Boot 配置文件的自动提示消失(无法扫描配置文件)的完整解决方案
java·spring boot·intellij-idea
杀神lwz7 分钟前
Java Json压缩工具类
java·json
虾..8 分钟前
Linux 基于TCP实现服务端客户端通信(线程池)
java·网络协议·tcp/ip
big_rabbit05029 分钟前
[算法][力扣226]翻转一颗二叉树
数据结构·算法·leetcode
前端小雪的博客.12 分钟前
【Java 基础】变量全解:定义、命名规范、作用域与常量(附代码示例+面试题)
java·作用域·java基础·java入门·变量·常量·java面试题
TracyCoder12313 分钟前
LeetCode Hot100(65/100)——64. 最小路径和
算法·leetcode·职场和发展
z2014z13 分钟前
Deflate 算法详解
网络·算法
条tiao条14 分钟前
从 “Top-K 问题” 入门二叉堆:C 语言从零实现与经典应用
c语言·算法·深度优先
uesowys16 分钟前
华为OD算法开发指导-数据结构-图
数据结构·算法·华为od