java8 根据实体类中的某个字段对实体类去重

1.测试代码示例

import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.stream.Collectors;

@Slf4j
public class test {


    public static void main(String[] args) {

        //1.构造测试数据
        List<Student> oldStudents = new ArrayList<>();

        Student student1 = new test().new Student();
        student1.setName("小王");
        student1.setOnlyKey("123");
        oldStudents.add(student1);

        Student student2 = new test().new Student();
        student2.setName("小王");
        student2.setOnlyKey("123");
        oldStudents.add(student2);

        Student student3 = new test().new Student();
        student3.setName("小孙");
        student3.setOnlyKey("123444");
        oldStudents.add(student3);

        log.info("去重之前的数据:{}", JSON.toJSONString(oldStudents));

        //java8 去重
        List<Student> newStudents = oldStudents.stream().collect(Collectors.collectingAndThen(
                Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getOnlyKey))), ArrayList::new)
        );

        log.info("去重之后的数据:{}",JSON.toJSONString(newStudents));

    }

    @Data
    class Student {

        private String name;

        private String onlyKey;

    }


}

2.测试结果

image.png

3.适用场景

像从数据库查询数据 selectOne but select many 这种问题,代码中依此可以进行规避处理OvO

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容