当前位置:  开发笔记 > 编程语言 > 正文

如何在没有return语句的情况下编写这个lambda表达式?

如何解决《如何在没有return语句的情况下编写这个lambda表达式?》经验,为你挑选了1个好方法。

以下方法实现了一个BiFunctiona Map和一个值来搜索.它搜索的EntryMap包含给定值,并返回相应的键.

这个实现有效,但是我想写一个没有return语句的lambda表达式,以使代码更优雅.

private BiFunction, String, String> findName = (m, s) -> {
    Map.Entry e = 
        m.entrySet()
         .stream()
         .filter(entry -> entry.getValue() != null && !entry.getValue().isEmpty() && entry.getValue().equals(s))
         .findFirst()
         .orElse(null);
    return e != null ? e.getKey() : null;
};

我该怎么做?



1> Eran..:

为了摆脱return语句以及花括号,lambda表达式的主体必须是单个表达式,其类型是lambda表达式的返回类型 - String在您的情况下.

你的findFirst()回报了Optional>.您希望将其映射到Optional(其中String是条目的键)并返回null它是否为空.

您可以实现,使用Optionalmap方法:

private BiFunction, String, String> findName = (m, s) -> 
    m.entrySet().stream()
            .filter(entry -> entry.getValue() != null && !entry.getValue().isEmpty() && entry.getValue().equals(s))
            .findFirst()
            .map(Map.Entry::getKey)
            .orElse(null);

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有