如何使'Map::get'返回找到的值的'Optional'或'Optional.empty()'

2022-09-01 12:38:54

我正在尝试这样做:

return Optional.of(myMap.getOrDefault(myKey, null));

真的,我想要的是返回一个如果找到,否则.我不认为这等同于此。我想要做什么语法?Optional.of(foundVal)Optional.empty()Optional.of(null)

也就是说,我如何获得地图以返回适当的?getOptional


答案 1

为什么不简单地:

return Optional.ofNullable(myMap.get(myKey));

JavaDocs


答案 2

Optional.of(myMap.getOrDefault(myKey, null));

或者真的

Optional.of(null);

如果出现 .正如javadoc所说NullPointerException

Throws:
NullPointerException - if is nullvalue

Optional#ofNullable 存在,当你不知道你传递给它的值是否是:null

参数
- 要描述的可能为空的值value

由于Map#get(Object)在给定键没有条目时已经返回null

返回
指定键映射到的值,或者此映射是否不包含键的映射null

您不需要使用默认值。您可以直接使用getOrDefaultnull

Optional.ofNullable(myMap.get(myKey));

推荐