如何在 java 8 流 api 中使用番石榴谓词作为过滤器
How to use guava Predicates as filter in the java 8 stream api
Guava Predicates 不能直接用作 java 8 流 API.
的过滤器
例如这是不可能的:
Number first = numbers.stream()
.filter( com.google.common.base.Predicates.instanceOf(Double.class)))
.findFirst()
.get();
如何将 guava 谓词转换为 java 8 谓词,如下所示:
public static <T> Predicate<T> toJava8(com.google.common.base.Predicate<T> guavaPredicate) {
return (e -> guavaPredicate.apply(e));
}
Number first = numbers.stream()
.filter( toJava8( instanceOf(Double.class)))
.findFirst()
.get();
问题:是否有更优雅的方法在 java 8 中重用番石榴谓词?
Guava谓词apply
方法的方法句柄是一个函数式接口,可以用作过滤器:
Number first = numbers.stream()
.filter(Predicates.instanceOf(Double.class)::apply)
.findFirst()
.get();
Guava Predicates 不能直接用作 java 8 流 API.
的过滤器例如这是不可能的:
Number first = numbers.stream()
.filter( com.google.common.base.Predicates.instanceOf(Double.class)))
.findFirst()
.get();
如何将 guava 谓词转换为 java 8 谓词,如下所示:
public static <T> Predicate<T> toJava8(com.google.common.base.Predicate<T> guavaPredicate) {
return (e -> guavaPredicate.apply(e));
}
Number first = numbers.stream()
.filter( toJava8( instanceOf(Double.class)))
.findFirst()
.get();
问题:是否有更优雅的方法在 java 8 中重用番石榴谓词?
Guava谓词apply
方法的方法句柄是一个函数式接口,可以用作过滤器:
Number first = numbers.stream()
.filter(Predicates.instanceOf(Double.class)::apply)
.findFirst()
.get();