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

Java函数式接口详解:Predicate、Function、Consumer等常用接口

发布时间:2023-06-23 00:21:45

在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中常用的函数式接口,它们可以大大简化代码,并增加代码的可读性和可维护性。