/**
* List集合中存在相同元素,实现去重,并将各数值相加
* 1.创建map集合,物料型号唯一,因此以物料型号为key,对象SkuDemandItemDTO为value,并存放最后的去重数据
* 2.遍历当前BomList集合,map集合中存在则取出对象进行数值计算,重新存进map集合中
* 3.遍历map集合,通过key以此取出对象放入新List集合中进行返回
*/
HashMap<String, SkuDemandItemDTO> map = new HashMap<>();
for (SkuDemandItemDTO item : BomList) {// 遍历原集合
if (map.containsKey(item.getMaterielModel())) {// 若map中的key包含该型号
SkuDemandItemDTO itemDTO = map.get(item.getMaterielModel());// 取出该对象,与集合中相同的对象进行数量合并
itemDTO.setQty(item.getQty() + itemDTO.getQty());
map.put(item.getMaterielModel(), itemDTO);// 将合并数量的该对象重新存入map集合,因key值相同,所以会覆盖掉之前的对象
} else {
map.put(item.getMaterielModel(), item);
}
}
List<SkuDemandItemDTO> list = new ArrayList<>();
for (String model : map.keySet()) {// 将map中的对象重新存放新的List集合
SkuDemandItemDTO itemDTO = map.get(model);
list.add(itemDTO);
}
注:BomList为原List集合,存放了型号相同的物料且数量不同,需合并