如何使用String
从Optional<String>
返回ifPresent
值并避免NullPointerException
?
示例:
public String longestName() {
Optional<String> longName = someList.stream().reduce((name1, name2) -> name1.length() > name2.length() ? name1 : name2);
// If I do not want to use following
// return longName.isPresent() ? longName.get() : "not present";
// Can I achieve this using longName.ifPresent or longName.orElse("not present");
}
答案 0 :(得分:2)
如果可选项没有值,则返回可选值或默认值,可以使用orElse(other)
。
projectId
请注意,我重写了代码以找到最长的名称:您可以直接使用max(comparator)
和比较器来比较每个String的长度。通过调用Comparator.comparingInt(keyExtractor)
并使用密钥提取器作为方法参考public String longestName() {
Optional<String> longNameOpt = someList.stream().max(Comparator.comparingInt(String::length));
return longNameOpt.orElse("not present");
}
,可以获得一个这样的比较器。