【发布时间】:2019-11-19 18:18:14
【问题描述】:
我是 Java 8 的新手,我想创建一个方法来获取第一个匹配的元素并在应用函数后返回
public void test() {
List<String> features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
String str = features
.stream()
.filter(s -> "Lambdas".equals(s))
.findFirst()
.ifPresent(this::toLowerCase);
}
private String toLowerCase (String str) {
return str.toLowerCase();
}
但我收到了不兼容类型错误。
【问题讨论】:
-
不要使用
ifPresent。它是无效的。使用map,后跟get、orElse、orElseGet、... -
不错的功能列表 :-)
-
顺便说一句,我喜欢
s -> s.equals("Lambdas")。如果你坚持yoda condition,也可以使用方法参考:"Lambdas"::equals。 -
您是否明确要为此目的使用
Stream API?它也可以通过利用features.contains()方法来实现。如果此条件的计算结果为true,则只需返回"Lambdas"字符串的小写值。
标签: java lambda java-8 functional-programming java-stream