lambda过滤集合中对象为空的数据
list = list.stream().filter(IndividualPv -> RealName().contains(keyWord) ||
这⾥有⼀个对象IndividualPv,是⽤来做⽹站⼈员访问量的,现在需要添加⼈员信息的搜索功能,我就想这⽤java8的对list的字段过滤。因为⽤户有部分是后台注册的,真实姓名和部门为空,导致list在过滤的时候会抛出NullPointerException,如何过滤掉呢?
⽹上了解决办法:
1、如果是只过滤⼀个字段,可以模仿这样写:
filter过滤对象数组cars.stream()
.filter(car -> Null(car))
.map(car -> Name())
.filter(carName -> Null(carName))
.filter(carName -> carName.startsWith("M"))
.List());
还可以使⽤Optional.ofNullable:
List<String> carsFiltered = Optional.ofNullable(cars)
.orElseGet(Collections::emptyList)
.stream()
.filter(Objects::nonNull) //filtering car object that are null
.map(Car::getName) //now it's a stream of Strings
.filter(Objects::nonNull) //filtering null in Strings
.filter(name -> name.startsWith("M"))
.
List()); //back to List of Strings
2、我想着是查询多个字段的过滤的,还没什么好⽅法。
要么就是分开过滤,合并list再去重。
要么就是前端分字段查询。
⼀定有更好的办法。
亲娘哎,⼜不要这个功能了。
ps:数据量其实不⼤,不到⼀万。但是这个需要很多个表联合查询,不太适⽤like。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论