List<Map>转Map<String,List>

1、问题

我现在拿到的数据是下图形式,那我现在需要以cubicleId为主键,重新组list

List<Map>转Map<String,List>_第1张图片

处理后的数据,这是我想要的数据

List<Map>转Map<String,List>_第2张图片

2、解决

Map newMap = grouping(listParams,"cubicleId");
 private static Map grouping(List list, String key) {
        // 使用TreeMap存放元素并排序
        Map newMap = new TreeMap<>(new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        list.stream().forEach(m -> {
            List l = new ArrayList<>();
            l.add(m);
            newMap.replace(m.get(key).toString(), l);
            if (m.containsKey(key)) {
                if (newMap.containsKey(m.get("cubicleId").toString())){
                    l.add(m);
                    newMap.replace(m.get(key).toString(), l);
                }else {
                    l.clear();
                    l.add(m);
                    newMap.put(m.get(key).toString(), l);
                }
        }});
        return newMap;
    }

3、补充

List根据Map的某个字段去重

listParams = listParams.stream().collect(Collectors.collectingAndThen(
                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p -> p.get("cubicleId").toString()))),
                    ArrayList::new));

 

你可能感兴趣的:(javaweb,springboot,java,List转Map)