写项目时可能会遇见查询的几条数据和前端传给后端的某个参数同时整合到一个列表中,此时 如果数据库里面没有数据,但是你封装给前端的数据里面有序号或者其他实体类以外的字段,就会影响你判断到底数据面有没有数据
如图所示:
编号 | 姓名 | 年龄 | 住址 | 身高 | 工资 |
001 | zhangsan | 30 | 福建厦门 | 180 | 2000 |
002 |
显然编号不是数据库查询内容,但是在页面上面通过点击要查询的编号进而查询想要的人,此时编号已经进入列表(返回的list),但是数据库内容为空,比如002这条数据。
@Data @AllArgsConstructor @NoArgsConstructor public class User { private String name; private Integer age; private String addr; private Integer height; private Double salary; }
@Test public void testStreamFilter(){ //模拟这是插入数据库的四条数据 User zhangsan = new User("zhangsan",23,"福建厦门",180,2080.1); User lisi = new User("lisi",33,"甘肃天水",189,2700.7); User wangwu = new User("wangwu",42,"广东深圳",185,4580.9); User zhaoliu = new User("zhaoliu",35,"湖北武汉",178,7908.2); //把四条数据存储到list集合里面,模拟从数据库查询的状态 Listlist = Lists.newArrayList(zhangsan,lisi,wangwu,zhaoliu); //将list集合转化成stream进行截取name和salary两个属性进行查询 Stream stream = list.stream().filter(x -> x.getName() != null || x.getSalary() != null); //将stream再次转换成list集合 List collect = stream.collect(Collectors.toList()); System.out.println(collect); }