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

huangapple go评论69阅读模式
英文:

Using lambda expression to access a value in a map using an optional key

问题

我需要从地图M<X,Y>中访问一个值,并且我有一个类型为Optional<X> key的键。我需要使用lambda表达式,以便我可以检查键是否存在,如果存在,就使用它来访问值,否则返回空。

我正在进行以下操作:

return key.ifPresent(xx -> {
    Optional.of(M.getOrDefault(foo(xx), null));
});

但是它报错"void类型被提供,但所需类型是Optional"。对此有什么建议吗?

英文:

I need to access a value from a map M&lt;X,Y&gt; and I have a key of type Optional&lt;X&gt; key. I need to use lambda expression such that I can check whether the key is present, if present, access the value using it otherwise, return empty.

I am doing:

return key.ifPresent(xx -&gt; {
    Optional.of(M.getOrDefault(foo(xx), null));
});

But it is giving void type provided but required type is Optional<Y>. Suggestions into this?

答案1

得分: 1

以下是翻译好的代码部分:

private Optional<Y> findingY(Map<X, Y> M, Optional<X> key) {
    return key.map(M::get);
}
英文:

you could b looking for something like:

private Optional&lt;Y&gt; findingY( Map&lt;X,Y&gt; M, Optional&lt;X&gt; key) {
    return key.map(M::get);
}

huangapple
  • 本文由 发表于 2020年10月8日 22:52:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/64265163.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定