在给定的基于Java流的代码中处理空指针
我有下面给定的数据结构
在给定的代码块中,我试图从给定的HashMap中获取对象Dc
如果地图已获得与给定键(cNumber)关联的对象,则该代码段将起作用
我的问题是,当在映射中找不到给定的键时,如何处理(//5)行中的空指针
如果有人能够修改这个基于流的代码来处理异常,这将是一个很大的帮助
public class Dc {
private String cNumber;
private Optional<List<pTerms>> pTerms;
}
public class Dd {
private String cParty;
//Dc:cNumber is the Key
private Optional<Map<String,Dc>> dealCommits;
}
public class PTerms {
private String pType;
}
public String check(String tMonth,String cNumber,Dd dDetails)
{
Optional<DealPricingTerms> dealPricingTerms = dDetails
.getDealCommits().get()
.get(cNumber)
.getPTerms().get().stream() //5
.filter(dealPricingTerm ->
tMonth.equals(dealPricingTerm.getDeliveryPeriod()))
.findFirst();
return dealPricingTerms.isPresent()? "Success" : "failed";
}
# 1 楼答案
在条件筛选器之前,必须添加筛选器以检查null
。过滤器(对象::非空)
比如
# 2 楼答案
你不应该在你的选项上调用
get()
,当你使用Optional.map
时,你有一个很好的方法将一个空结果从映射中包装到另一个可选的: