有个需求,我要获取一个部门下所有的人员年龄在30岁并且是高级工程师和技术专家的人员信息。
当然sql也可以处理这个需求,但是我现在用代码处理这个需求,java8Stream流式思想可以帮我们解决这个问题。
我们先定义一个部门人员集合DeptUser
@Data
public class DeptUser {
//用户id
private int userId;
//年龄
private int age;
//性别
private String sex;
//职位级别
private String technology;
public DeptUser() {
}
public DeptUser(int userId, int age, String sex, String technology) {
this.userId = userId;
this.age = age;
this.sex = sex;
this.technology = technology;
}
}
List<DeptUser> deptUserList = new ArrayList<>();
deptUserList.add(new DeptUser(1,22,"女","李诗诗","高级工程师"));
deptUserList.add(new DeptUser(2,30,"女","陈圆圆","高级工程师"));
deptUserList.add(new DeptUser(3,25,"男","韩子高","助理工程师"));
deptUserList.add(new DeptUser(4,30,"男","卫玠","技术专家"));
deptUserList.add(new DeptUser(5,21,"女","苏小小","中级工程师"));
//我们来用Stresm流处理
List<DeptUser> collect = deptUserList.stream().filter(s -> s.getAge() == 30).filter(s -> s.getTechnology().equals("高级工程师") || s.getTechnology().equals("技术专家")).collect(Collectors.toList());
//打印输出
collect.forEach(System.out::println);
打印输出:
DeptUser(userId=2, age=30, sex=女, name=陈圆圆, technology=高级工程师)
DeptUser(userId=4, age=30, sex=男, name=卫玠, technology=技术专家)