1、多条件去重 

        List<user> infoList = new ArrayList<>();
        //实体类  userName  orderNumber   age
        infoList.add(new user("11111", "xc", "22"));
        infoList.add(new user("11111", "xc", "33"));
        infoList.add(new user("11111", "xy", "22"));
        infoList.add(new user("22222", "xc", "23"));
        infoList.add(new user("22222", "xc", "33"));
        infoList.add(new user("22222", "xy", "22"));
        List<user> list = infoList.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
                        Comparator.comparing(f -> f.getUserName() + f.getOrderNumber()))), ArrayList::new));
        System.out.println(list);

2、多条件判断是否存在重复数据

 List<SupplierPerformanceBillHead> list = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            SupplierPerformanceBillHead bean = new SupplierPerformanceBillHead();
            bean.setToElsAccount(String.valueOf(i));
            if (i==2){
                bean.setToElsAccount(String.valueOf(i-1));
                bean.setTemplateNumber("测试");//这里修改,会出现不重复
            }else {
                bean.setTemplateNumber("测试");
            }
            bean.setTemplateName("www");
            list.add(bean);
        }
        for (SupplierPerformanceBillHead head : list) {
            System.out.println(head);
        }

        // 使用stream和Lambda表达式进行分组和过滤
        Map<String, Long> duplicates = list.stream()
                .collect(Collectors.groupingBy(person -> person.getToElsAccount() + "_" + person.getTemplateNumber()+ "_" + person.getTemplateName(), Collectors.counting()))
                .entrySet().stream()
                .filter(entry -> entry.getValue() > 1)
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
       if (duplicates.isEmpty()){
           System.out.println("没有重复数据");
       }else {
           System.out.println("存在重复数据");
       }
        // 打印重复的数据
        duplicates.forEach((key, value) -> System.out.println("重复字符组: " + key + ", 条数: " + value));

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐