我是靠谱客的博主 冷静便当,这篇文章主要介绍JAVA8 - 使用stream api进行list集合指定字段去重,现在分享给大家,希望可以做个参考。

背景

有一个list,实体包含多个字段,当其中两个字段值均相同时,就认为list中的这两条记录是一样的

去重

java8中有一个collectingAndThen可以根据多个字段去重

依据姓名和年龄去重,当姓名和年龄相同时,认为这两个实体相同


class FlightTicketInfo {

    private String orderNumber;

    private String userName;

    private String age;

    public FlightTicketInfo(String orderNumber, String userName, String age) {
        this.orderNumber = orderNumber;
        this.userName = userName;
        this.age = age;
    }

    @Override
    public String toString() {
        return "FlightTicketInfo{" +
                "orderNumber='" + orderNumber + ''' +
                ", userName='" + userName + ''' +
                ", age='" + age + ''' +
                '}';
    }

    public String getOrderNumber() {
        return orderNumber;
    }

    public String getUserName() {
        return userName;
    }

    public String getAge() {
        return age;
    }
}

    @Test
    public void testList(){
        List<FlightTicketInfo> infoList = new ArrayList<>();
        infoList.add(new FlightTicketInfo("11111", "xiaoming", "22"));
        infoList.add(new FlightTicketInfo("22222", "xiaoming", "22"));
        infoList.add(new FlightTicketInfo("33333", "xiaoming", "23"));
        infoList.add(new FlightTicketInfo("11111", "xiaoming", "22"));
        infoList.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getUserName()+f.getAge()))), ArrayList::new))
                .forEach(System.out::println);
    }

最后

以上就是冷静便当最近收集整理的关于JAVA8 - 使用stream api进行list集合指定字段去重的全部内容,更多相关JAVA8内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部