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