java Lambda List集合重复数据获取实现

2021-10-15  本文已影响0人  普通的一个程序员

Map列表,对其中多个列进行分组,判断重复的实现

    public static List uniqueList(List<Map<String, String>> rows) {

        List test = rows.stream().collect(Collectors.toMap(e -> {
            return e.get("column1") + "_" + e.get("column2");
        }, e-> {
            List result = new ArrayList();
            result.add(e);
            return result;
        }, (a, b) -> {
            a.addAll(b);
            return a;
        })).entrySet().stream().filter(entry -> entry.getValue().size() > 1)
                .collect(ArrayList::new, (list, entry)->{
                    list.addAll(entry.getValue());
                },(list1, list2) ->{
                    list1.addAll(list2);
                });
        return test;
    }

获取重复的key

    public static Set getMultiKeys(List<Map<String, String>> rows) {

        Set test = rows.stream().collect(Collectors.toMap(e -> {
            return e.get("column1") + "_" + e.get("column2");
        }, e-> {
            List result = new ArrayList();
            result.add(e);
            return result;
        }, (a, b) -> {
            a.addAll(b);
            return a;
        })).entrySet().stream().filter(entry -> entry.getValue().size() > 1)
                .collect(HashSet::new, (list, entry)->{
                    list.add(entry.getKey());
                },(list1, list2) ->{
                    list1.addAll(list2);
                });
        return test;
    }
上一篇下一篇

猜你喜欢

热点阅读