加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读