Java 使用lambda表达式使用可选键访问映射中的值

Java 使用lambda表达式使用可选键访问映射中的值,java,lambda,Java,Lambda,我需要从映射M中访问一个值,并且我有一个可选键类型的键。我需要使用lambda表达式,以便检查键是否存在,如果存在,则使用它访问值,否则返回空 我正在做: 返回键。如果存在(xx->{ 可选。of(M.getOrDefault(foo(xx),null)); }); 但它提供了void类型,但required类型是可选的。关于这方面的建议?您可以寻找以下内容: private Optional<Y> findingY( Map<X,Y> M, Optional<X

我需要从映射
M
中访问一个值,并且我有一个
可选键类型的键。我需要使用lambda表达式,以便检查键是否存在,如果存在,则使用它访问值,否则返回空

我正在做:

返回键。如果存在(xx->{
可选。of(M.getOrDefault(foo(xx),null));
});

但它提供了void类型,但required类型是可选的。关于这方面的建议?

您可以寻找以下内容:

private Optional<Y> findingY( Map<X,Y> M, Optional<X> key) {
    return key.map(M::get);
}
private可选查找(映射M,可选键){
返回key.map(M::get);
}

那么你真的有一张
地图
?为什么?寻找类似于
if(map.containsKey(key)和&key.isPresent()){return map.get(key.get());}或者{return null;}
?如果映射的默认值是
null
,您难道不希望
可选的。尝试添加您的输入和预期输出。映射类型为M。我有一个可选键,我必须检查该键是否为空。如果不是,我将把它传递给一个函数,将它转换成其他形式,并使用它访问映射。如果为null,则返回Optional.empty()。类似于
x.map(xx->M.getOrDefault(foo(xx),null))
here
.map()
返回选项完全是我想要的。非常感谢你!