首页 > 技术文章 > 根据对象属性过滤List对象集合

CoderRdf 2021-02-03 14:40 原文

public class CollectionTest {

public static void main(String[] args) {
    User user1 = new User(1,"zs",20);
    User user2 = new User(2,"ls",21);
    User user3 = new User(3,"ww",22);
    User user4 = new User(4,"zs",22);
    User user5 = new User(5,"ls",25);
    User user6 = new User(5,"ls",25);

    List<User> users = Arrays.asList(user1, user2, user3, user4, user5,user6);
    ArrayList<User> collect = users.stream().collect(Collectors.collectingAndThen(
            Collectors.toCollection(
                    () -> new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));
    collect.forEach(user-> System.out.println(user));
    System.out.println("----------------------------------------");
    ArrayList<User> collect2 = users.stream().collect(Collectors.collectingAndThen(
            Collectors.toCollection(
                    () -> new TreeSet<>(Comparator.comparing(User::getAge))), ArrayList::new));
    collect2.forEach(user-> System.out.println(user));
    System.out.println("----------------------------------------");
    TreeSet<User> collect3 = users.stream().collect(Collectors.toCollection(
                    () -> new TreeSet<>(Comparator.comparing(User::getAge))));
    collect3.forEach(user-> System.out.println(user));
    System.out.println("----------------------------------------");
    Set<User> collect4 = users.stream().collect(Collectors.toSet());
    collect4.forEach(user-> System.out.println(user));
}

}

User{id=2, name='ls', age=21}
User{id=3, name='ww', age=22}
User{id=1, name='zs', age=20}

User{id=1, name='zs', age=20}
User{id=2, name='ls', age=21}
User{id=3, name='ww', age=22}
User{id=5, name='ls', age=25}

User{id=1, name='zs', age=20}
User{id=2, name='ls', age=21}
User{id=3, name='ww', age=22}
User{id=5, name='ls', age=25}

User{id=1, name='zs', age=20}
User{id=3, name='ww', age=22}
User{id=5, name='ls', age=25}
User{id=2, name='ls', age=21}
User{id=4, name='zs', age=22}
User{id=5, name='ls', age=25}

推荐阅读