public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("value", 2);
list.add(map1);
Map<String, Object> map6 = new HashMap<String, Object>();
map6.put("id", 1);
map6.put("value", 2);
list.add(map6);
Map<String, Object> map5 = new HashMap<String, Object>();
map5.put("id", 1);
map5.put("value", 4);
list.add(map5);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 1);
map2.put("value", 5);
list.add(map2);
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("id", 2);
map3.put("value", 5);
list.add(map3);
Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("id", 2);
map4.put("value", 4);
list.add(map4);
Map<String, Object> map7 = new HashMap<String, Object>();
map7.put("id", 2);
map7.put("value", 4);
list.add(map7);
//id相等value追加(合并id相同数据)
System.out.println("原始数据:" + list);
Map<String, Object> res = new HashMap<String, Object>();
for (Map<String, Object> map : list) {
String id = map.get("id").toString();
String value = map.get("value").toString();
if (res.containsKey(id)) {
String oldVal = res.get(id).toString();
value = oldVal + "," + value;
}
res.put(id, value);
}
System.out.println("合并后的数据:" + res);
//值去重处理
Map<String, Object> res2 = new HashMap<String, Object>();
for (String key : res.keySet()) {
String valArr[] = res.get(key).toString().split(",");
Set<String> set = new HashSet<String>(Arrays.asList(valArr));
String[] newArr = set.toArray(new String[set.size()]);
String tarVal = StringUtils.join(newArr,",");
res2.put(key,tarVal);
}
System.out.println("去重后的数据:" + res2);
}
输出: