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>