Return 来自可选的值
Return value from Optional
如何使用 ifPresent
并避免 NullPointerException
从 Optional<String>
中 return 一个 String
值?
示例:
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");
}
给return一个optional的值,或者一个默认值如果optional没有值,你可以使用orElse(other)
.
public String longestName() {
Optional<String> longNameOpt = someList.stream().max(Comparator.comparingInt(String::length));
return longNameOpt.orElse("not present");
}
请注意,我重写了您查找最长名称的代码:您可以直接使用 max(comparator)
with a comparator comparing the length of each String. One such comparator can be obtained by calling Comparator.comparingInt(keyExtractor)
,密钥提取器是方法参考 String::length
。
如何使用 ifPresent
并避免 NullPointerException
从 Optional<String>
中 return 一个 String
值?
示例:
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");
}
给return一个optional的值,或者一个默认值如果optional没有值,你可以使用orElse(other)
.
public String longestName() {
Optional<String> longNameOpt = someList.stream().max(Comparator.comparingInt(String::length));
return longNameOpt.orElse("not present");
}
请注意,我重写了您查找最长名称的代码:您可以直接使用 max(comparator)
with a comparator comparing the length of each String. One such comparator can be obtained by calling Comparator.comparingInt(keyExtractor)
,密钥提取器是方法参考 String::length
。