数组处理,去重&合并相同key的值

背景:

上游返回的 skuIdList 存在相同的Id,skuCount数组与skuID一一对应

处理结果:skuIdList 去重,对应的count总和要加起来,对应的 originalPriceList 和 subtotalPriceList 不变

代码:

Groovy 复制代码
import groovy.json.JsonSlurper
def skuIdList = new JsonSlurper().parseText('["472262851","472302672","472284575","472262851"]');
//logs.add('skuIdList:\n' + skuIdList.toString());
def applySkuList = [];
def originalPriceList = new JsonSlurper().parseText("[0.03,510.0,51.0,0.03]");
def subtotalPriceList = new JsonSlurper().parseText("[0.21,3570.0,408.0,0.21]");
def skuCountList = new JsonSlurper().parseText("[7,7,8,7]");
def parentPackageId = 5008466108;
 
def skuIdCountMap = [:];
def originalPriceList2 =[];
def subtotalPriceList2 =[];
//通过map去重skuID,并重新写对应价格的数组,使其一一对应
for (int i = 0; i < skuIdList.size(); i++) {
    def currentSkuId = skuIdList[i];
    def currentCount = skuCountList[i];
    if(skuIdCountMap.containsKey(currentSkuId)){
        skuIdCountMap[currentSkuId] += currentCount;
    } else {
        skuIdCountMap[currentSkuId] = currentCount; 
        originalPriceList2.add(originalPriceList[i]);
        subtotalPriceList2.add(subtotalPriceList[i]);
    }
}
/*
遍历skuIdCountMap
分别把skuID 与 对应count 写入2个数组
*/
def skuIDs = [];
def skuCounts = [];
for (String key : skuIdCountMap.keySet()) {
   skuCounts.add(skuIdCountMap[key])
    skuIDs.add(key);
}
println skuIdCountMap;
println originalPriceList2;
println subtotalPriceList2;
println skuIDs;
println skuCounts;

运行结果

java 复制代码
[472262851:14, 472302672:7, 472284575:8]
[0.03, 510.0, 51.0]
[0.21, 3570.0, 408.0]
[472262851, 472302672, 472284575]
[14, 7, 8]
相关推荐
循着风9 分钟前
多种二分查找
java
努力也学不会java12 分钟前
【Java并发】深入理解synchronized
java·开发语言·人工智能·juc
TDengine (老段)12 分钟前
TDengine 数学函数 CEIL 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
LB211234 分钟前
Redis 黑马skyout
java·数据库·redis
豐儀麟阁贵40 分钟前
Java知识点储备
java·开发语言
hrrrrb1 小时前
【Spring Security】Spring Security 密码编辑器
java·hive·spring
豐儀麟阁贵1 小时前
2.3变量与常量
java·开发语言
兮动人2 小时前
Eureka注册中心通用写法和配置
java·云原生·eureka
爱编程的小白L4 小时前
基于springboot志愿服务管理系统设计与实现(附源码)
java·spring boot·后端
聪明的笨猪猪6 小时前
Java Redis “持久化”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试