首页 > 图灵资讯 > 技术篇>正文
Java 常用的函数式接口
2024-01-10 10:04:11
通常用于Java的函数接口介绍
函数编程是将计算作为数学函数组合的编程范式,强调使用不可变数据和无副作用的函数。Java 8 函数接口是函数编程的核心概念之一。
函数接口是一个只包含抽象方法的接口。通过使用函数接口,我们可以使用Lambda表达式或引用方法来创建简单灵活的代码。本文将介绍Java中常用的函数接口及其使用方法和示例代码。
常用的函数接口Java常用的函数接口主要有以下几种:
Consumer<T>
:在不返回的情况下接收输入参数。Consumer<String> printUpperCase = str -> System.out.println(str.toUpperCase());printUpperCase.accept("hello"); // 输出:HELLO
Supplier<T>
:无参数,返回结果。Supplier<Double> random = () -> Math.random();System.out.println(random.get()); // 输出:随机数
Function<T, R>
:接收输入参数并返回结果。Function<Integer, String> toString = num -> String.valueOf(num);System.out.println(toString.apply(10)); // 输出:10
Predicate<T>
:接收输入参数,返回布尔值结果。Predicate<Integer> isPositive = num -> num > 0;System.out.println(isPositive.test(5)); // 输出:true
UnaryOperator<T>
:继承Function<T, R>,相同类型的输入和输出。UnaryOperator<Integer> square = num -> num * num;System.out.println(square.apply(5)); // 输出:25
BinaryOperator<T>
:继承BiFunction<T, U, R>,接收两个输入参数并返回一个结果。BinaryOperator<Integer> sum = (a, b) -> a + b;System.out.println(sum.apply(3, 5)); // 输出:8
使用函数接口可以简化代码,提高可读性。以下是一些使用示例:
示例1:集合元素遍历List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 用Consumer接口打印每个元素numbers.forEach(num -> System.out.println(num));// 使用方法引用打印每个元素numbers.forEach(System.out::println);
示例2:过滤集合元素List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 使用Predicate接口过滤偶数Listtte<Integer> evenNumbers = numbers.stream() .filter(num -> num % 2 == 0) .collect(Collectors.toList());System.out.println(evenNumbers); // 输出:[2, 4]
示例3:转换集合元素List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 使用Function接口将整数转换为字符串Listist<String> numberStrings = numbers.stream() .map(num -> String.valueOf(num)) .collect(Collectors.toList());System.out.println(numberStrings); // 输出:["1", "2", "3", "4", "5"]
总结函数接口是Java中函数编程的核心概念之一。通过使用函数接口,我们可以使用Lambda表达式或方法来创建一个简单和灵活的代码。本文介绍了Java中常用的几个函数接口及其使用方法和示例代码。通过学习和掌握这些函数接口,我们可以更好地应用函数编程的想法,提高代码的可读性和可维护性。
流程图flowchart TD A[开始] --> B[遍历集合元素] B --> C[过滤集合元素] C --> D[转换集合元素] D --> E[结束]
参考资料- [Java 8 Functional Interfaces](