lambda表达式两个不同类型的集合过滤,一个集合作为另一个集合条件

需求

现有两集合,一个是User的集合A,一个是User中所有User的ID的集合B。现在需要对集合A进行过滤,找到集合A中所有ID都在集合B中的User。

通俗一点来说:就是现在有一个ID的集合A,现在需要在所有用户集合B中找到符合这个A集合中的ID的用户。
实体类:

class User{ 
    private String name;
    private String id;

    public User(String name, String id) { 
        this.name = name;
        this.id = id;
    }

    public String getName() { 
        return name;
    }

    public void setName(String name) { 
        this.name = name;
    }

    public String getId() { 
        return id;
    }

    public void setId(String id) { 
        this.id = id;
    }

    @Override
    public String toString() { 
        return "User{" +
                "name='" + name + '\'' +
                ", id='" + id + '\'' +
                '}';
    }
}

public class Test { 
    public static void main(String[] args) { 
        final List<User> userList = createUserList();
        List<String> list2 = new ArrayList();
        list2.add("3333");
        list2.add("4444");
        list2.add("5555");
//过滤,找到符合list2中的ID的user
        final List<User> collect = userList.stream().filter(user -> list2.contains(user.getId())).collect(Collectors.toList());
        System.out.println(collect);
    }
    public static List<User> createUserList(){ 
        final User tonm = new User("tonm", "2332");
        final User jack = new User("jack", "4444");
        final User amili = new User("aimili", "2222");
        final User hot = new User("hot", "5555");
        final User linda = new User("linda", "1223");
        final User alis = new User("alis", "3434");
        final User et = new User("et", "2332");
        List<User> userList = new ArrayList<>();
        userList.add(tonm);
        userList.add(jack);
        userList.add(amili);
        userList.add(hot);
        userList.add(linda);
        userList.add(alis);
        userList.add(et);
        return userList;
    }
}

控制台输出:

[User{ name='jack', id='4444'}, User{ name='hot', id='5555'}]

对象按属性排序(Integer)

        userList.sort(Comparator.comparingInt(UserBo::getId));
        #####按排序规则从小到大排序#####
        List<User> collect = usertList.stream().sorted(Comparator.comparing(User::getUserAge, Comparator.nullsFirst(Integer::compareTo))).collect(toList());

    原文作者:sinat_38719275
    原文地址: https://blog.csdn.net/sinat_38719275/article/details/106171006
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞