为了账号安全,请及时绑定邮箱和手机立即绑定

lambda 从地图中检索整数

lambda 从地图中检索整数

哆啦的时光机 2021-10-06 11:00:17
我试图在使用 Lambda 表达式进行计算后获取数字,但出现错误。我正在使用的 lambda 表达式:int num = Optional.ofNullable(list.stream().filter(x->x.getType().getTypeId()==Type.getTypeId()).limit(1).map(x->x.getNum())).get();过滤后,我想获得第一个检索到的值。但我收到的错误是cannot convert from Stream<Integer> to int所以,目前我使用的方式是Optional<> li = list.stream().filter(x->x.getType().getTypeId()==Type.getTypeId()).findFirst();if (li.isPresent()) {    num = li.map(x-> x.getNum()).get();}但是,我正在寻找上述内容是否可以在一行中完成而不是额外的if语句早些时候,我尝试了get()with findFirst(),但它给了nullpointerException. 如何安全地检索该值。
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

list.stream().filter(x->x.getType().getTypeId()==Type.getTypeId()).limit(1).map(x->x.getNum())返回一个Stream. 您缺少findFirst终端操作:


int num = 

    list.stream()

        .filter(x->x.getType().getTypeId()==Type.getTypeId())

        .map(x->x.getNum())

        .findFirst()

        .orElse(0); // default value in case the Stream is empty after the filtering


查看完整回答
反对 回复 2021-10-06
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信