我正在尝试这样做:
return Optional.of(myMap.getOrDefault(myKey, null));
真的,我要返回的是一个Optional.of(foundVal)
,否则返回Optional.empty()
。我不认为Optional.of(null)
等同于此。我想做什么语法?
也就是说,如何获取地图get
以返回正确的Optional
?
答案 0 :(得分:9)
答案 1 :(得分:4)
此
Optional.of(myMap.getOrDefault(myKey, null));
或者真的
Optional.of(null);
将失败,并显示NullPointerException
。根据{{3}}的声明
投掷:
NullPointerException -如果value
为空
javadoc存在,当您不知道要传递给它的值是否为null
时:
参数:
value
-描述的可能为空的值
并且由于Optional#ofNullable
在没有给定键的条目时已经返回null
返回:
指定键所映射的值;如果是,则null
该地图不包含该键的映射
您无需将getOrDefault
与默认值null
一起使用。您可以直接使用
Optional.ofNullable(myMap.get(myKey));
答案 2 :(得分:-1)
实用且肯定太长的解决方案:
myMap.entrySet().stream()
.filter(it -> it.getKey().equals(myKey))
.findFirst()
.map(Map.Entry::getValue);