Lambda表达式和函数式接口

Lambda表达式定义

Lambda 表达式是 JDK 1.8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。

函数式接口定义

面向对象的思想:
做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。
函数式编程思想:
只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程。
有且仅有一个抽象方法的接口就是函数式接口,Java中的函数式编程体现就是Lambda,Lambda表达式也必须依靠函数式接口。

JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。

函数式接口的使用

public interface FunctionInterfaceDemo {
    
    public abstract void print(String message);

}

Lambda表达式的使用

    public static void realizeFunction(String message,FunctionInterfaceDemo demo){
        demo.print(message);
    }

    public static void main(String[] args) {
        realizeFunction("Hello",(message)->{
            System.out.println(message);
        });
    }

常用函数式接口

主要位于java.util.function

1.1 Supplier接口(生产接口)

方法: T get();

对外提供一个符合泛型类型的对象数据。

1.2 Consumer接口(消费接口)

方法(1):void accept(T t);

消费传入的数据,即对数据进行一次自定义处理。

方法(2):default Consumer andThen(Consumer<? super T> after)

消费传入的数据,对数据进行两次自定义处理。

1.3 Predicate接口(断言接口)

方法(1):boolean test(T t);

对传入的数据,进行判断,返回判断的结果。

方法(2):default Predicate and(Predicate<? super T> other)

将两个Predicate条件使用“与”逻辑连接起来实现“并且”的效果。

方法(3):default Predicate or(Predicate<? super T> other)

将两个Predicate条件使用“或”逻辑连接起来实现“或”的效果。

方法(4):default Predicate negate()

取反,对test(T t)判断后的结果进行取反。

1.4 Function接口(转换接口)

方法(1):R apply(T t);

对传入的数据类型T,进行处理为R类型数据,并返回。

方法(2):default Function<T, V> andThen(Function<? super R, ? extends V> after)

对传入的数据类型进行两次处理后,返回我们需要的数据类型。

XFS
原文地址:https://www.cnblogs.com/xiaofengshan/p/14655088.html