Java8集合去重

ArrayList<Student> collect1 = list.stream().collect(

// 使用 collectingAndThen 收集器,实现在最终收集结果上执行操作
Collectors.collectingAndThen(
    // 使用 toCollection 收集器,将流中元素收集到指定的容器类型中(这里是 TreeSet)
    Collectors.toCollection(
        () -> new TreeSet<>(
            // 按照学生 ID 进行比较排序
            Comparator.comparing(Student::getId)
        )
    ),

    ArrayList::new
)

);

// 多条件去重复
// 使用 parallelStream 并行流进行操作,以提高效率
blackModeDTOs = blackModeDTOs.parallelStream()

.collect(Collectors.collectingAndThen(
    // 使用 collectingAndThen 收集器,实现在最终收集结果上执行操作
    Collectors.toCollection(
        () -> new TreeSet<BlackModeDTO>(
            // 创建比较器对 BlackModeDTO 对象进行比较排序
            new Comparator<BlackModeDTO>() {
                @Override
                public int compare(BlackModeDTO o1, BlackModeDTO o2) {
                    // 比较两个对象的 cifName 和 cifNo 属性是否相同,决定是否去重
                    if (o1.getCifName().trim().equals(o2.getCifName().trim()) && 
                        o1.getCifNo().trim().equals(o2.getCifNo().trim())) {
                        // 如果属性相同,则返回 0 表示不保留该元素(去重)
                        return 0;
                    }
                    // 如果属性不同,则返回 1 表示保留该元素(不去重)
                    return 1;
                }
            }
        )
    ),
    // 将 TreeSet 转换为 ArrayList 结果返回
    ArrayList<BlackModeDTO>::new)
); 

扫描二维码,在手机上阅读!

发表评论

电子邮件地址不会被公开。 必填项已用*标注