我必须获取数组的第一个元素。但该元素可能为空;如果元素为空,我将放置一个空字段(我正在尝试生成一个 pdf)
这是我现在的代码:
public void makePdf(Long id) throws IOException {
Candidacy ca = candidacyRepository.findOne(id);
cos.beginText();
cos.showText(
ca.getInterviews().stream().map(Interview::getAgency).map(Agency::getAgencyName).collect( Collectors.toList()).get(0)!=null?ca.getInterviews().stream().map(Interview::getAgency).map(Agency::getAgencyName).collect( Collectors.toList()).get(0):""));
cos.endText();
}
Run Code Online (Sandbox Code Playgroud)
所以我不想阻止pdf的生成。非常感谢您的支持!
更新
抱歉不够精确:我也按日期排序。
public void makePdf(Long id) throws IOException {
Candidacy ca = candidacyRepository.findOne(id);
cos.beginText();
cos.showText(
ca.getInterviews().stream().sorted((a,b)-> a.getInterviewDate().compareTo(b.getInterviewDate())).sorted((a,f)->f.getInterviewDate().compareTo(a.getInterviewDate())).sorted((b,f)->b.getInterviewDate().compareTo(f.getInterviewDate())).map(Interview::getAgency).map(Agency::getAgencyName).collect( Collectors.toList()).get(0)!=null?ca.getInterviews().stream().sorted((a,b)-> a.getInterviewDate().compareTo(b.getInterviewDate())).sorted((a,f)->f.getInterviewDate().compareTo(a.getInterviewDate())).sorted((b,f)->b.getInterviewDate().compareTo(f.getInterviewDate())).map(Interview::getAgency).map(Agency::getAgencyName).collect( Collectors.toList()).get(0):""));
cos.endText();
}
Run Code Online (Sandbox Code Playgroud)
我收到一个 NullPointerException:/ 谢谢你的帮助
这段代码没有意义。您正在执行相同的Stream管道两次,每次生成一个完整的管道List时,您只需要该管道的第一个元素List。
您可以使用findFirst来获取Stream.
编辑 :
在测试了我原来的答案后,结果发现它不起作用。如果第一个元素是 ,则findFirst()抛出 a 。NullPointerExceptionnull
您可以通过在调用之前设置默认值来避免这种情况findFirst():
ca.getInterviews().stream()
.map(Interview::getAgency)
.map(Agency::getAgencyName)
.map(s->s!=null?s:"") // this will replace null with ""
.firstFirst()
.get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15862 次 |
| 最近记录: |