java List<<Map>> List<Map<String,Object>> 根据根据指定字段去重

时间:2025-03-20 07:58:34
//最终去重后的ListMap List<Map<String, Object>> listMap = new ArrayList<>(); // msp存放过滤后的Map 将ID当key 将去掉的ID的map当value。 因为Map 中的key(键)是唯一的,刚好可以去重。 Map<String, Map> msp = new HashMap<>(); //approveRecordList 是要去重的List,这里用的是从后面先取出来。那就是说会去重后面的值,保留前面的值,因为先存后面的value吗,然后前面有的话就会将前面的覆盖掉,就实现了去重。 for(int i = approveRecordList.size()-1 ; i>=0; i--){ //从后获取 Map Map map = approveRecordList.get(i); //我这里指定的是根据ClueID去重。你们可以换成你们要去重复的字段。 String id = (String)map.get("ClueID"); //删除现有Map中你所指定的字段。 map.remove("ClueID"); //存入msp 中,以你所指定的字段值当key,去掉的所指定的那个字段当值。 msp.put(id, map); } //其实上面????????已经做好去重啦。我们只需要将key再次循环送到Map中就好啦 Set<String> mspKey = msp.keySet(); for(String key: mspKey){ //获取没有指定字段的Map Map newMap = msp.get(key); //然后将指定字段塞入Map newMap.put("ClueID", key); //最后返回我们上面写好的ListMap返回。 listMap.add(newMap); }