我是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();
如何用方法引用进行等式检查。 有可能做吗?
提前谢谢你。
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();