欢迎访问宙启技术站
智能推送

Java中的BiFunction函数介绍及应用

发布时间:2023-06-07 03:21:40

BiFunction是一个函数接口,它包含一个apply方法,接收两个参数,并返回一个结果。它是Java 8中预定义的函数式接口,定义如下:

@FunctionalInterface
public interface BiFunction<T, U, R> {
    R apply(T t, U u);
}

BiFunction接口的参数类型可以根据需要进行更改。 个参数表示输入类型T,第二个参数表示输入类型U,第三个参数表示返回类型R。

BiFunction在Java 8中引入,它可以接受两个输入参数并返回一个结果,可以将其看作是Function的两个参数版本。

BiFunction的应用场景很多,一般用于需要两个输入参数的函数式接口场景。一些示例应用如下:

1. 将两个数组进行合并

public static <T> T[] merge(T[] first, T[] second, BiFunction<T[], T[], T[]> merger) {
    return merger.apply(first, second);
}

2. 比较两个字符串大小

public static void compareString(String a, String b, BiFunction<String, String, Integer> comp) {
    int result = comp.apply(a, b);
    if (result > 0) {
        System.out.println(a + " is greater than " + b);
    } else if (result < 0) {
        System.out.println(a + " is smaller than " + b);
    } else {
        System.out.println(a + " is equal to " + b);
    }
}

3. 对集合中的元素进行拼接

public static <T> String join(Collection<T> collection, String delimiter, BiFunction<String, T, String> joiner) {
    StringBuilder builder = new StringBuilder();
    Iterator<T> iterator = collection.iterator();
    while (iterator.hasNext()) {
        builder.append(joiner.apply(delimiter, iterator.next()));
    }
    return builder.toString();
}

4. 计算两个数的和

public static int add(Integer a, Integer b, BiFunction<Integer, Integer, Integer> adder) {
    return adder.apply(a, b);
}

BiFunction的应用场景不限于以上,只要是需要两个输入参数的场景都可以使用BiFunction函数接口。