需求
现有两集合,一个是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());