【发布时间】:2018-09-23 09:42:58
【问题描述】:
我在使用 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() 和findFirst(),但它给出了nullpointerException。如何安全地检索该值。
【问题讨论】:
标签: java dictionary lambda java-8