提问者:小点点

在Java 8中检查两个字符串相等时如何使用方法引用?


我是Java 8号的新手,刚开始学习。

这是我的代码片段。

String name = "yoga";
List<String> names = Arrays.asList("yoga", "kani");

我对lambda做过,很好

Optional<String> resultSet = names.stream().filter(r->r.equals(name)).map(String::toUpperCase).findAny();

如何用方法引用进行等式检查。 有可能做吗?

提前谢谢你。


共1个答案

匿名用户

r->r.equals(name)无法转换为方法引用,因为Java语言不支持此操作。 但是,您可以做一个小技巧:由于str1.equals(str2)返回与str2.equals(str1)相同的结果(除了null,但这里不是这样),所以您可以重写R->; r.equals(name)r->; name.equals(r)。 新lambda不能转换为方法引用:

Optional<String> resultSet = names
        .stream()
        .filter(name::equals)
        .map(String::toUpperCase)
        .findAny();