19 Java BiFunction 和 BinaryOperator

本文为个人学习摘要笔记。 原文地址: Java8 函数式接口 BiFunction 使用教程 Java8 函数式接口 BinaryOperator 使用教程

Java 常用函数接口:

name
type
description

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 接口。

最后更新于

这有帮助吗?