Java函数式接口详解:Predicate、Function、Consumer等常用接口
在Java中,函数式编程变得越来越受欢迎。通过函数式编程,我们可以将函数作为参数传递,从而使代码更加简洁和易于维护。Java函数式编程涉及到一些常用的函数式接口,如Predicate、Function、Consumer等,本文将详细介绍这些接口。
1. Predicate接口
Predicate接口表示一个返回布尔值的函数,该函数接受一个参数。这个接口非常适合判断某一个对象是否符合特定的条件。Predicate接口包含一个test方法,该方法接受一个对象并返回布尔值。以下是Predicate接口的示例:
Predicate<String> pred = s -> s.length() > 0;
System.out.println(pred.test("Java")); // true
System.out.println(pred.test("")); // false
2. Function接口
Function接口表示从一个对象到另一个对象的函数映射。Function接口包含一个apply方法,该方法接受一个参数并返回一个结果。以下是Function接口的示例:
Function<Integer, String> func = (i) -> i.toString() + " dollars"; System.out.println(func.apply(5)); // 5 dollars
3. Consumer接口
Consumer接口表示接受一个参数并对其进行处理的函数。Consumer接口包含一个accept方法,该方法接受一个参数并没有返回值。以下是Consumer接口的示例:
Consumer<String> consumer = (s) -> System.out.println("Hello, " + s);
consumer.accept("World"); // Hello, World
4. Supplier接口
Supplier接口表示没有输入参数但返回结果的函数。Supplier接口包含一个get方法,该方法没有输入参数,返回一个结果。以下是Supplier接口的示例:
Supplier<Double> random = () -> Math.random(); System.out.println(random.get()); // 0.8022114992951342
5. UnaryOperator和BinaryOperator接口
UnaryOperator表示一个接受一个参数并返回一个结果的函数,该函数的输入和输出类型都相同。UnaryOperator接口包含一个apply方法。
BinaryOperator表示一个接受两个参数并返回一个结果的函数,该函数的输入和输出类型都相同。BinaryOperator接口包含一个apply方法。以下是UnaryOperator和BinaryOperator接口的示例:
UnaryOperator<String> unary = (s) -> s.toUpperCase();
System.out.println(unary.apply("java")); // JAVA
BinaryOperator<Integer> binary = (a, b) -> a + b;
System.out.println(binary.apply(5, 10)); // 15
以上是Java中常用的函数式接口,它们可以大大简化代码,并增加代码的可读性和可维护性。
