Java中的函数式接口:Predicate、Function、Consumer接口详解

在Java中,函数式接口是指只有一个抽象方法的接口。Java 8之后,引入了函数式编程的思想,使得Java中的函数式接口得到了广泛的应用。本文将详细介绍Java中的三种常用函数式接口:Predicate、Function、Consumer接口。


Predicate接口

Predicate接口是一个函数式接口,它接收一个输入参数,返回一个布尔值。该接口通常用于判断某个输入值是否满足指定条件。

函数定义

@FunctionalInterface public interface Predicate<T> {     boolean test(T t); }

细节用法

Predicate接口有一个默认方法and,可以将两个Predicate对象进行逻辑与操作,即取两个Predicate对象的交集。另外,Predicate接口还有一个默认方法or,可以将两个Predicate对象进行逻辑或操作,即取两个Predicate对象的并集。

参数案例

Predicate<String> predicate1 = (s) -> s.length() > 0; Predicate<String> predicate2 = (s) -> s.startsWith("hello"); boolean result = predicate1.and(predicate2).test("hello world"); System.out.println(result); //true

Function接口

Function接口是一个函数式接口,它接收一个输入参数,返回一个输出结果。该接口通常用于进行数据类型转换或数据处理。

函数定义

@FunctionalInterface public interface Function<T, R> {     R apply(T t); }

细节用法

Function接口有一个默认方法andThen,可以将两个Function对象进行逻辑与操作,即先执行当前Function对象,再执行after操作的Function对象。另外,Function接口还有一个默认方法compose,可以将两个Function对象进行逻辑或操作,即先执行before操作的Function对象,再执行当前Function对象。

参数案例

Function<Integer, String> function1 = (num) -> String.valueOf(num); Function<String, String> function2 = (str) -> "hello " + str; String result = function1.andThen(function2).apply(123); System.out.println(result); //hello 123

Consumer接口

Consumer接口是一个函数式接口,它接收一个输入参数,不返回任何结果。该接口通常用于对某个输入值进行处理,例如输出、修改等操作。

函数定义

@FunctionalInterface public interface Consumer<T> {     void accept(T t); }

细节用法

Consumer接口有一个默认方法andThen,可以将两个Consumer对象进行逻辑与操作,即先执行当前Consumer对象,再执行after操作的Consumer对象。

参数案例

Consumer<String> consumer1 = (str) -> System.out.println(str.toUpperCase()); Consumer<String> consumer2 = (str) -> System.out.println(str.toLowerCase()); consumer1.andThen(consumer2).accept("Hello World"); //HELLO WORLD hello world

以上就是Java中三种常用的函数式接口:Predicate、Function、Consumer接口的详细介绍,希望能帮助到编程小白们快速掌握这些接口的使用方法。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论