lambda 从地图中检索整数

我试图在使用 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. 如何安全地检索该值。


哆啦的时光机
浏览 109回答 1
1回答

莫回无

list.stream().filter(x->x.getType().getTypeId()==Type.getTypeId()).limit(1).map(x->x.getNum())返回一个Stream. 您缺少findFirst终端操作:int num =&nbsp;&nbsp; &nbsp; list.stream()&nbsp; &nbsp; &nbsp; &nbsp; .filter(x->x.getType().getTypeId()==Type.getTypeId())&nbsp; &nbsp; &nbsp; &nbsp; .map(x->x.getNum())&nbsp; &nbsp; &nbsp; &nbsp; .findFirst()&nbsp; &nbsp; &nbsp; &nbsp; .orElse(0); // default value in case the Stream is empty after the filtering
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java