首页 > 解决方案 > 将 ifPresent 添加到流

问题描述

如果传真不存在,我应该在哪里将 ifPresert() 应用于我的流以不抛出 NullPointerExpetion?

deptUserMap.get("Collection").stream()
.filter(u->u.getTitle().equals("Tester"))
.findFirst()
.orElse(new User())
.getFax());

标签: java

解决方案


您将返回 null 或用户传真:

Optional<String> userFax = deptUserMap.getOrDefault("Collection", Collections.emptyLis())
 .stream()
.filter(u->Objects.equals("Tester", u.getTitle())) // in case title is null
.findFirst()
.map(User::getFax);

如果需要,现在您可以打开 Optional 的包装userFax.orElse(null)

如果您在第一行面对 NPE,则意味着 deptUserMap 映射中没有“Collection”键。从JDK8开始,你可以使用getOrDefault来解决这个问题。


推荐阅读