Java中内置的函数式接口有哪些?
Java8在java.util.function包中提供了一些内置的函数接口,如:
Predicate:接受一个参数并返回一个布尔值。断言型
Function:接受一个参数并返回一个结果。功能型
Consumer:接受一个参数但不返回任何结果。消费型
Supplier:不接受参数,但返回一个结果。供给型
T:表示函数的输入类型。这个参数类型是泛型,意味着你可以将Function接口应用于任何类型的输入数据。
R:表示函数的输出类型。这个返回类型也是泛型,意味着函数可以返回任何类型的结果。
这些内置的函数接口可以用于各种场景,使得 Lambda 表达式和流操作更加方便和灵活。
比如使用 Function 接口:
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function converter = (num) -> "The number is: " + num;
String result = converter.apply(42); // 输出 "The number is: 42"
System.out.println(result);
}
}
不用自己去定义函数式接口了,直接使用各种内置的就可以。此时才想起当初看李老师写线程池那里的不同参数用不同接口的这个写法,才懂啊。
通过与其他Java 8特性(如Stream API、方法引用等)结合使用,Lambda表达式可以发挥更大的作用。
三、Stream API
Lambda表达式与Stream API使用
Stream API可以让人以声明式方式处理数据集合。
通过Stream API可以用更简洁的代码对数据执行复杂的查询操作。
在java.util.stream包下有stream的一系列类文件。
集合的根接口Collection里的stream()可以创建创建一个顺序流来对数据一次遍历,遍历过程中你可以对数据进行过滤、排序、聚合等操作。