业务场景:
在List<Map<String, Object>>。里面的Map<String, Object>某一个key(订单号)会出现相同。我们需要对相同的key进行合并
package com.chinajey.web.test; import java.util.*; /** * Created by water on 2018/11/1. */ public class Test { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("bar_code", "java1"); map1.put("order_id", "JAVA交流"); map1.put("count", 1); Map<String, Object> map2 = new HashMap<>(); map2.put("bar_code", ".net1"); map2.put("order_id", ".NET交流"); map2.put("count", 1); Map<String, Object> map3 = new HashMap<>(); map3.put("bar_code", "java2"); map3.put("order_id", "JAVA交流"); map3.put("count", 1); Map<String, Object> map4 = new HashMap<>(); map4.put("bar_code", "java3"); map4.put("order_id", "JAVA交流"); map4.put("count", 1); list.add(map1); list.add(map2); list.add(map3); list.add(map4); list = removeRepeatMapByKey(list,"order_id"); System.out.println(list); } /** * List<Map<String, Object>> key相同累加数量 * @author shijing * @param list * @param mapKey * @return */ public static List<Map<String, Object>> removeRepeatMapByKey(List<Map<String, Object>> list, String mapKey) { //把list中的数据转换成msp,去掉同一id值多余数据,保留查找到第一个id值对应的数据 List<Map<String, Object>> listMap = new ArrayList<>(); Map<String, Map> msp = new HashMap<>(); for (int i = list.size() - 1; i >= 0; i--) { Map map = list.get(i); String id = (String) map.get(mapKey); map.remove(mapKey); //记录存在 if(msp.containsKey(id)){ //当前存放的数据 记录存在的数量+当前需要存放的数量 map.put("count", Double.parseDouble(msp.get(id).get("count").toString())+Double.parseDouble(map.get("count").toString())); map.put("bar_code", msp.get(id).get("bar_code").toString()+";"+map.get("bar_code").toString()); } //map 同一个key赋值会替换 msp.put(id, map); } //把msp再转换成list,就会得到根据某一字段去掉重复的数据的List<Map> Set<String> mspKey = msp.keySet(); for (String key : mspKey) { Map newMap = msp.get(key); newMap.put(mapKey, key); listMap.add(newMap); } return listMap; } }
bar_code相当于订单的批次号,相同订单批次号用;隔开count相当于订单的数量,相同订单号的数量累加
本文为程序员之家原创文章,转载无需和我联系,但请注明来自程序员之家www.baldhome.com