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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~