有两个List
def maps1 = [
[ 'itemCode': 'A123', 'companyCode': 'Comp1', 'warehouseCode': 'WH1', 'quantity': 10 ],
[ 'itemCode': 'B456', 'companyCode': 'Comp2', 'warehouseCode': 'WH2', 'quantity': 6 ]
]
def maps2 = [
[ 'itemCode': 'A123', 'companyCode': 'Comp1', 'warehouseCode': 'WH1', 'quantity': 5 ],
[ 'itemCode': 'C789', 'companyCode': 'Comp3', 'warehouseCode': 'WH3', 'quantity': 2 ]
]
def mergedMapList = mergeMapLists(maps1, maps2)
println "Merged List of Maps: $mergedMapList"
// 将maps1和maps2中的合并在一起,相同的itemCode,companyCode,warehouseCode的map合并quantity
def mergeMapLists(List<Map> maps1, List<Map> maps2) {
// 使用一个临时map来保存合并的结果
def tempMap = [:]
// 将maps1中的元素加入tempMap
maps1.each { Map map1 ->
def key = generateKey(map1)
tempMap[key] = map1.clone() // 使用clone()以免直接修改maps1中的原始map
}
// 将maps2中的元素合并到tempMap中
maps2.each { Map map2 ->
def key = generateKey(map2)
if (tempMap.containsKey(key)) {
// 相同的itemCode,companyCode,warehouseCode的map合并quantity
tempMap[key].quantity += map2.quantity
} else {
// 如果 tempMap 中没有这个 key,直接添加 map2
tempMap[key] = map2.clone() // 使用clone()以免直接修改maps2中的原始map
}
}
// 返回合并后的map列表
return tempMap.values().toList()
}
// 定义一个辅助方法来生成key
def generateKey(Map map) {
return "${map.itemCode}:${map.companyCode}:${map.warehouseCode}"
}