本文主要介绍Java 8中,Predicate<T>和Function<T, R>之间的区别,以及使用的示例代码。

1、Predicate<T>和Function<T, R>区别

1) 返回值

Predicate<T>返回必须是boolean类型,而Function<T, R>中返回值是可以自己指定的R类型。

2) 使用情景

Predicate<T>是需要使用一个类型为T的参数,返回值为布尔值的函数时,如可以过滤Stream,从满足条件的Stream中找到第一个元素:.filter(predicate).findFirst(),或者从满足某个条件的stream中检查元素的存在,anyMatch,noneMatch,allMatch等。

Function<T, R>是当需要使用一个函数将一个T类型参数转换为R类型,例如调用stream.map(func)

2、Predicate<T>和Function<T, R>使用示例代码

Predicate<String> predicate = p -> p.length() == 21;
Stream<String> stream = stringList().stream().filter(predicate);

或者

Function<String, Boolean> function = p -> p.length() == 21;
Stream<Boolean> stream = stringList().stream().map(function);

相关文档Predicate<T>Function<T,R>