java8 stream流操作常见问题
本篇文章主要用于个人记录自己在使用stream流操作的时候遇见的常见的问题,有出现相关问题的小伙伴可以参考一下是不是也和我犯了一样的错误呢!(真的很烦百度出来的乱七八糟的答案,很容易误导人,所以决定自己记录一下,希望能帮到你们)
第一个问题是在使用stream进行排序时候抛出空指针异常:java.lang.NullPointerException: null
- 我在查询所有的用户信息表的时候进行排序,使用sql语句进行排序也可以,但是当表内数据量增加很大的话,会很影响数据库的性能,所以决定把排序放到
业务层面(java代码)来实现,所以此时就用到了java8的stream流操作,下面是具体实现的代码
//获取所有用户数据
List<User> userStream = iUserService.getAll()
//将数据转成stream流
.stream()
//调用stream流的排序方法:sorted;对User::getAge中的age进行升序排序
.sorted(Comparator.comparing(User::getAge))
//将stream流转化为list集合
.collect(Collectors.toList());
System.out.println(userStream);
- 下面是我的表数据:
我们运行程序的时候发现就会出现空指针异常:java.lang.NullPointerException: null
原因:使用stream流操作指定字段进行排序时,这个字段的值在数据库不允许存在null数据,否则排序会报空指针异常,也就是说我们按照age进行排序,在数据库里面age就不允许存在null的数据,否则就会出现此问题,完美解决!