如何在java 8 stream api中使用guava Predicates作为过滤器

前端之家收集整理的这篇文章主要介绍了如何在java 8 stream api中使用guava Predicates作为过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Guava Predicates不能作为java 8 streaming API的过滤器使用.

例如,这是不可能的:

  1. Number first = numbers.stream()
  2. .filter( com.google.common.base.Predicates.instanceOf(Double.class)))
  3. .findFirst()
  4. .get();

当guava谓词转换为java 8谓词时,如何可能,如下所示:

  1. public static <T> Predicate<T> toJava8(com.google.common.base.Predicate<T> guavaPredicate) {
  2. return (e -> guavaPredicate.apply(e));
  3. }
  4.  
  5. Number first = numbers.stream()
  6. .filter( toJava8( instanceOf(Double.class)))
  7. .findFirst()
  8. .get();

问题:有没有更优雅的方法在java 8中重用guava Predicates?

解决方法

Guava谓词的apply方法方法句柄是一个可用作过滤器的功能接口:
  1. Number first = numbers.stream()
  2. .filter(Predicates.instanceOf(Double.class)::apply)
  3. .findFirst()
  4. .get();

猜你在找的Java相关文章