如何在java 8 stream api中使用guava Predicates作为过滤器
发布时间:2020-12-14 23:33:12 所属栏目:Java 来源:网络整理
导读:Guava Predicates不能作为java 8 streaming API的过滤器使用. 例如,这是不可能的: Number first = numbers.stream() .filter( com.google.common.base.Predicates.instanceOf(Double.class))) .findFirst() .get(); 当guava谓词转换为java 8谓词时,如何可能
Guava
Predicates不能作为java 8 streaming 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 Predicates? 解决方法
Guava谓词的apply方法的方法句柄是一个可用作过滤器的功能接口:
Number first = numbers.stream() .filter(Predicates.instanceOf(Double.class)::apply) .findFirst() .get(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |