19 Java BiFunction 和 BinaryOperator
本文为个人学习摘要笔记。 原文地址: Java8 函数式接口 BiFunction 使用教程 Java8 函数式接口 BinaryOperator 使用教程
Java 常用函数接口:
Consumer
Consumer< T >
接收 T 对象,不返回值
Predicate
Predicate< T >
接收 T 对象并返回 boolean
Function
Function< T, R >
接收 T 对象,返回 R 对象
Supplier
Supplier< T >
提供 T 对象(例如工厂),不接收值
UnaryOperator
UnaryOperator
接收 T 对象,返回 T 对象
BinaryOperator
BinaryOperator
接收两个 T 对象,返回 T 对象
BiFunction
BiFunction 可以接受两个参数并返回一个结果。
@FunctionalInterface
public interface BiFunction<T, U, R> {
R apply(T t, U u);
}T – 第一个参数的类型;
U – 第二个参数的类型;
R – 返回结果的类型。
基本用法
串联 Function<T, R>
封装:
工厂模式
BinaryOperator
在 Java8 中 BinaryOperator 继承自 BiFunction,同样也是一个函数式接口。BinaryOperator 可以接受两个类型为 T 的参数,返回一个类型为 T 的结果。
替换 BiFunction
当 BiFunction 的两个参数类型与返回值类型都是同一类型的时候,我们可以使用 BinaryOperator 替换 BiFunction,比如可以用 BinaryOperator<Integer> 替换 BiFunction<Integer, Integer, Integer>。
计算最大/最小值
BinaryOperator 提供两个方法比较大小:
maxBy()方法可以返回两个参数中较大的值,它的实现相当于三目表达式:a > b ? a : b;minBy()方法可以返回两个参数中较小的值,它的实现相当于三目表达式:a < b ? a : b。
如果将 maxBy() 和 minBy() 用于对象的比较还需要实现一个自定义的 Comparator 接口。
最后更新于
这有帮助吗?