日常开发中,需要对集合进行条件筛选出相应的数据,如果对集合进行遍历判断,再加入到新的集合,对于我们这种简洁派的程序员看着就很别扭,那我们利用java8的新特性stream对集合进行筛选只需要一行。
List<User> userList = new ArrayList<>();
//新建用户对象
User user = new User();
//主键id
user.setId(1);
//用户姓名
user.setName("张三");
//用户年龄
user.setAge(18);
//用户性别 0-男 1-女
user.setSex(1);
User user2 = new User();
user2.setId(2);
user2.setName("李四");
user2.setAge(18);
user2.setSex(0);
User user3 = new User();
user3.setId(3);
user3.setName("王五");
user3.setAge(18);
user3.setSex(1);
//加入集合中
userList.addAll(Arrays.asList(user, user2, user3));
//如果userList为null时,直接调用stream进行筛选会报空指错
if (userList != null && userList.size() > 0) {
//单条件:筛选出id为1的用户
List<User> idCollect = userList.stream().filter(i -> i.getId() != null && i.getId() == 1).collect(Collectors.toList());
System.out.println(idCollect);//[User(id=1, name=张三, sex=1, age=18)]
//多条件:筛选出性别为女并且id为3的用户
List<User> sexCollect = userList.stream().filter(i -> i.getSex() != null && i.getId() != null && i.getSex() == 1 && i.getId() == 3).collect(Collectors.toList());
System.out.println(sexCollect);//[User(id=3, name=王五, sex=1, age=18)]
}