java8 stream流操作常见问题

java8 stream流操作常见问题

本篇文章主要用于个人记录自己在使用stream流操作的时候遇见的常见的问题,有出现相关问题的小伙伴可以参考一下是不是也和我犯了一样的错误呢!(真的很烦百度出来的乱七八糟的答案,很容易误导人,所以决定自己记录一下,希望能帮到你们)

第一个问题是在使用stream进行排序时候抛出空指针异常:java.lang.NullPointerException: null

  1. 我在查询所有的用户信息表的时候进行排序,使用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);
  1. 下面是我的表数据:
    在这里插入图片描述
    我们运行程序的时候发现就会出现空指针异常:java.lang.NullPointerException: null
    原因:使用stream流操作指定字段进行排序时,这个字段的值在数据库不允许存在null数据,否则排序会报空指针异常,也就是说我们按照age进行排序,在数据库里面age就不允许存在null的数据,否则就会出现此问题,完美解决!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值