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

函数式接口在Java中的应用:Predicate,Function,Consumer,Supplier

发布时间:2023-06-10 15:20:55

函数式接口是Java 8引入的一个新功能,它们可以使代码更加简洁、可读、易于维护,特别是在处理集合、数组和其他数据结构的时候。

Predicate是一个函数式接口,它接受一个参数,返回一个布尔值。一般用于过滤集合或数组中的元素。例如,假设有一个String集合,我们可以使用以下代码过滤出所有以"A"开头的字符串:

List<String> strings = Arrays.asList("Apple", "Orange", "Banana");
List<String> result = strings.stream().filter(str -> str.startsWith("A")).collect(Collectors.toList());

Function是一个函数式接口,它接受一个参数,返回一个结果。它用于将一个输入值映射成一个输出值,在许多情况下可以用于转换数据。例如:

List<String> strings = Arrays.asList("1", "2", "3");
List<Integer> result = strings.stream().map(str -> Integer.valueOf(str)).collect(Collectors.toList());

Consumer是一个函数式接口,它接受一个参数,但不返回任何结果。它通常用于对一个集合或数组进行处理。例如,如果我们有一个数字集合,我们可以使用以下代码输出每个元素的平方:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(num -> System.out.println(num * num));

Supplier是一个函数式接口,它不接受任何参数,但返回一个结果。它通常用于生成一些数据或对象。例如,我们可以使用以下代码创建一个随机数生成器:

Supplier<Double> random = () -> Math.random();
System.out.println(random.get());

总之,函数式接口在Java中有着广泛的应用,可以用于处理数组、集合和其他数据结构,使代码更加简洁、可读、易于维护。掌握它们的使用将大大提高您的编程能力。