java8 List根据对象中属性去重-多属性去重-去除重复字符串

简介: java8 List根据对象中属性去重-多属性去重-去除重复字符串

一、根据对象中属性去重

/**
     * java8 list<java bean>去重
     */
    @Test
    public void listRemoveDuplication() {
        List<User> users = new ArrayList<>();
        users.add(new User(1L, "aa", "aa"));
        users.add(new User(1L, "aa", "bb"));
        users.add(new User(1L, "aa", "cc"));
        users = users.stream().collect(
                collectingAndThen(
                        toCollection(
                                () -> new TreeSet<>(Comparator.comparing(User::getId))), ArrayList::new
                )
        );
        for (User user : users) {
            System.out.println(user);
        }
    }

61eb714b16a94b9e8979fe5cfeb34e9e.png

二、根据对象中多个属性去重

f5ed8a9cf41d46f785c845947d517900.png

  /**
     * java8 list<java bean> 根据多个bean属性去重
     * 根据属性id和pwd去重,满足id和pwd都一致时,视为相同属性
     */
    @Test
    public void listRemoveDuplication2() {
        List<User> users = new ArrayList<>();
        users.add(new User(1L, "aa", "aa"));
        users.add(new User(1L, "aa", "bb"));
        users.add(new User(1L, "aa", "cc"));
        users = users.stream().collect(
                Collectors.collectingAndThen(
                        Collectors.toCollection(
                                () -> new TreeSet<>(
                                        Comparator.comparing(
                                                o -> o.getId()
                                                        + ";"
                                                        + o.getPwd()
                                        )
                                )
                        ), ArrayList::new
                )
        );
        for (User user : users) {
            System.out.println(user);
        }
    }

f5ed8a9cf41d46f785c845947d517900.png

三、java8 去除重复字符串

    /**
     * java8 list<String> 去除重复的string
     */
    @Test
    public void stringRemoveDuplication() {
        List<String> strings = new ArrayList<>();
        strings.add("aa");
        strings.add("aa");
        strings.add("bb");
        strings.add("cc");
        strings = strings.stream().distinct().collect(Collectors.toList());
        for (String str : strings) {
            System.out.println(str);
        }
    }

b530cce227c94bafb638550a555e4c5f.png

相关文章
|
2天前
|
存储 Java
Java对象是一种复杂的数据结构
【4月更文挑战第28天】Java对象是基于类的实例,包含属性和方法。类是对象的蓝图,实例化过程在堆内存中分配空间。对象属性存储各种数据,通过点号运算符访问,方法执行操作。Java提供内置对象如String、Integer,也可自定义对象以实现特定功能,如学生管理系统或电商网站。
7 1
|
5天前
字符串和list互转
字符串和list互转
10 0
|
5天前
|
SQL Java
【SpringBoot】List<实体类>如何去重,单、多属性去重
【SpringBoot】List<实体类>如何去重,单、多属性去重
8 0
|
5天前
|
存储 Java
Java中利用BitMap位图实现海量级数据去重
Java中利用BitMap位图实现海量级数据去重
|
6天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
6天前
|
设计模式 存储 Java
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
|
6天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式
[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式
|
6天前
|
设计模式 JavaScript 前端开发
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
|
6天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式
[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式
|
6天前
|
设计模式 安全 Java
[设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式
[设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式