Fork me on GitHub

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)

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

posted @   晨度  阅读(84)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示