Java中有哪些内置的高阶函数?
Java语言中的高阶函数是指可以接受函数作为参数或返回函数的函数。Java SE 8 之后,Java也开始支持函数式编程,提供了一些内置的高阶函数。本篇文章主要讲解Java中内置的高阶函数,包括Function、Predicate、Consumer、Supplier等。
一、Function
Function是Java SE 8中最常使用的高阶函数之一。它接收一个参数,返回一个结果,其定义如下:
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
其中,T表示函数的输入类型,R表示函数的输出类型。apply()方法实现了具体的操作,输入为T类型的参数,输出为R类型的结果。
示例代码:
Function<Integer, Integer> square = x -> x * x; int result = square.apply(5); // result = 25
在上述示例中,定义了一个Function类型的变量square,用于计算一个整数的平方。根据定义,square函数接收一个Integer类型的参数,返回一个Integer类型的结果。调用apply(5)方法,返回25,即5的平方。
二、Predicate
Predicate用于判断某个条件是否满足,其定义如下:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
其中,T表示输入类型,test()方法接收一个T类型的参数,返回一个boolean类型的结果。
示例代码:
Predicate<Integer> isPositive = x -> x > 0; boolean result = isPositive.test(5); // result = true
上述示例中,定义了一个Predicate类型的变量isPositive用于判断输入的整数是否大于0。调用test(5)方法,返回true,满足条件。
三、Consumer
Consumer用于接收一个参数,对其进行操作,但是没有返回值。其定义如下:
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
其中,T表示输入类型,accept()方法接收一个T类型的参数,没有返回值。
示例代码:
Consumer<String> print = s -> System.out.println(s);
print.accept("Hello World"); // 输出Hello World
在上述示例代码中,定义了一个Consumer类型的变量print用于输出字符串。调用accept("Hello World")方法,输出Hello World。
四、Supplier
Supplier用于生成或提供某个值,其定义如下:
@FunctionalInterface
public interface Supplier<T> {
T get();
}
其中,T表示输出类型,get()方法没有输入参数,返回一个T类型值。
示例代码:
Supplier<Double> random = Math::random; double result = random.get(); // 生成一个[0,1)范围内的随机数
在上述示例代码中,定义了一个Supplier类型的变量random用于生成一个随机数。调用get()方法,返回一个[0,1)范围内的随机数。
综上所述,Java SE 8引入了一些内置的高阶函数(Function、Predicate、Consumer、Supplier等),使得函数式编程在Java上得到了很好的支持。在实际开发中,合理使用这些高阶函数可以提高代码可读性、模块化程度和效率。
