多个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);
        });
相关推荐
岑梓铭4 分钟前
《考研408数据结构》第七章(6.1~6.3图的概念、存储方式、深/广度遍历)复习笔记
数据结构·笔记·考研·算法·图论·408·ds
西岭千秋雪_11 分钟前
Zookeeper监听机制
java·linux·服务器·spring·zookeeper
毕设源码-林学长15 分钟前
计算机毕业设计java和Vue的安全教育科普平台设计与实现 安全知识普及与教育平台 安全教育信息化管理平台
java·开发语言·课程设计
ruleslol19 分钟前
java-接口适配器模式 & jsk8 接口默认实现
java·适配器模式
鬼火儿25 分钟前
网卡驱动架构以及源码分析
java·后端
qq_4335545430 分钟前
C++ 单调栈
数据结构·c++·算法
向前阿、31 分钟前
数据结构从基础到实战——排序
c语言·开发语言·数据结构·程序人生·算法
老华带你飞33 分钟前
房屋租赁|房屋出租|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·vue·论文·毕设·房屋租赁系统
TDengine (老段)36 分钟前
TDengine 数学函数 ASCII 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
2401_841495641 小时前
【语音识别】混合高斯模型
人工智能·python·算法·机器学习·语音识别·gmm·混合高斯模型