【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式

博主打算从0-1讲解下java进阶篇教学,今天教学第二篇:JDK8中Lambda表达式。 

Lambda 表达式是 Java 8 中引入的一项重要特性,它允许您以更简洁、更紧凑的方式编写匿名函数。Lambda 表达式使得函数式编程在 Java 中变得更加容易和优雅。下面我将为您详细介绍 Lambda 表达式的语法和用法,并提供多个案例代码。

目录

一、Lambda 表达式的语法

二、Lambda 表达式的用法

1.Lambda 表达式作为方法参数

2. Lambda 表达式作为函数式接口的实现 

3.简化集合操作

三、Lambda 表达式的注意事项


一、Lambda 表达式的语法

Lambda 表达式的基本语法如下:

(parameters) -> expression
或
(parameters) -> { statements; }

其中:

  • 参数列表(parameters):Lambda 表达式可以有零个或多个参数,如果有多个参数,则用逗号分隔。
  • 箭头符号(->):箭头符号将参数列表和Lambda主体分隔开。
  • Lambda 主体(expression 或 statements):Lambda 表达式的主体可以是一个表达式,也可以是一段代码块。

二、Lambda 表达式的用法

  1. 作为方法参数:Lambda 表达式可以作为方法的参数传递给其他方法。

  2. 作为函数式接口的实现:Lambda 表达式可以代替函数式接口的实现,例如 RunnableComparator 等。

  3. 简化集合操作:Lambda 表达式可以简化集合的操作,例如遍历、过滤、映射等。

1.Lambda 表达式作为方法参数

// 定义一个接口
interface MathOperation {int operate(int a, int b);
}// 定义一个方法,接受 MathOperation 参数
public int operate(int a, int b, MathOperation mathOperation) {return mathOperation.operate(a, b);
}public class LambdaExample {public static void main(String[] args) {// 使用 Lambda 表达式作为参数int result = operate(10, 5, (a, b) -> a + b);System.out.println("10 + 5 = " + result);}
}

2. Lambda 表达式作为函数式接口的实现 

// 使用 Lambda 表达式实现 Runnable 接口
Runnable runnable = () -> System.out.println("Hello from Lambda expression!");
new Thread(runnable).start();

3.简化集合操作

List<String> languages = Arrays.asList("Java", "Python", "C++", "JavaScript");// 使用 Lambda 表达式遍历集合
languages.forEach(language -> System.out.println(language));// 使用 Lambda 表达式过滤集合元素
List<String> filteredLanguages = languages.stream().filter(language -> language.startsWith("J")).collect(Collectors.toList());
System.out.println(filteredLanguages);

三、Lambda 表达式的注意事项

  • Lambda 表达式只能用于函数式接口,即只有一个抽象方法的接口。
  • Lambda 表达式中的局部变量必须是 final 或 effectively final。
  • Lambda 表达式不能有显式的返回类型。

以上是关于 Lambda 表达式的详细说明和多个案例代码。Lambda 表达式使得函数式编程在 Java 中变得更加便捷和灵活,能够提高代码的可读性和可维护性,使得 Java 编程变得更加优雅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++|模板进阶(非类型模板参数+特化)

目录 一、非类型模板参数 二、模板特化 2.1函数模板特化 2.2类模板特化 2.2.1全特化 2.2.2偏特化 三、模板不支持分离编译 四、模板优缺点 一、非类型模板参数 在模板初阶中&#xff0c;所学习的模板的参数是类型形参&#xff0c;但其实还有非类型形参。 类型形参&am…

boa.conf配置详解

boa的配置文件路径&#xff1a;/etc/boa/boa.conf Port 80 # 监听的端口号&#xff0c;缺省值是80 若80被占用&#xff0c;可修改监听端口为其他未占用端口&#xff08;如&#xff1a;88&#xff09; Listen 192.68.0.5 # 绑定调用的IP地址&#xff0c;一般注释掉&#xff0c;…

flutter 设置全屏 和隐藏状态栏和导航栏

设置全面屏 使用 SafeArea 将页面套起来 top bottom 都设置为true SafeArea(top: false,bottom: false,child: Container(child: _body(),), ), 隐藏状态栏和导航栏 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);overlays 中可以填需要展示的 如…

车灯LED电源控制降压恒流输出8A大电流芯片AP5125高低亮

产品描述 AP5125 是一款外围电路简单的 Buck 型平均电流检测模式的 LED 恒流驱动器&#xff0c;适用于 8-100V 电压范围的非隔离式大功率恒流 LED 驱动领域。芯片采用固定频率 140kHz 的 PWM 工作模式&#xff0c; 利用平均电流检测模式&#xff0c;因此具有优异的负载调整 率…

第26篇 Windows快捷键大全

201. Win Shift 左键点击任务栏图标 - 打开应用程序的窗口菜单&#xff0c;允许你进行更多操作&#xff0c;如关闭所有窗口。 202. Win Shift 左/右箭头 - 将当前窗口移动到上一个或下一个虚拟桌面。 203. Win Shift 左键点击开始按钮 - 搜索所有应用程序和文件&#xff…

Python中的Map函数:简化你的循环和函数调用

目录 一、Map函数基础 二、使用Lambda表达式 三、处理多个列表 四、与Filter和Reduce的比较 map函数 ilter函数 reduce函数 五、使用Map的好处 六、结语 &#x1f680; 个人主页&#xff1a;xmp65535 &#x1f680; 专栏&#xff1a;python技术专栏 在Python中&#…

汇编期末复习知识点

参考文献1 第一章 概述 组成 计算机系统由硬件子系统和软件子系统组成。硬件子系统&#xff1a;组成计算机系统的所有电子的&#xff0c;机械的&#xff0c;光学的和磁性的元部件。 计算机中常用进制数表示 十进制(Decimal):数据尾部加一后缀D&#xff0c;如2355D二进制&a…

nginx配置挂载html

目标 很多软件的官方文档&#xff0c;在国内打开很慢&#xff0c;每次都得等很久&#xff0c;看到官方同时提供了html的包&#xff0c;所以想着挂载到本地nginx下&#xff0c;查看会方便很多。 下载官方html文档包&#xff0c;解压到documentation_htmls下 想添加新的文档也是…

C语言前期算法整理

1. 分别获得一个四位数的个、十、百、千位上的数字 #include <stdio.h>int main(void) {int num 1234;int ge 0;int shi 0;int bai 0;int qian 0;ge num % 10;shi num / 10 % 10;bai num / 100 % 10;qian num / 1000;printf("ge %d\n", ge);printf(…

Golang基础3-函数、nil相关

函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值&#xff0c;因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包…

面试十七、list和deque

一、 Deque Deque容器是连续的空间&#xff0c;至少逻辑上看来如此&#xff0c;连续现行空间总是令我们联想到array和vector,array无法成长&#xff0c;vector虽可成长&#xff0c;却只能向尾端成长&#xff0c;而且其成长其实是一个假象&#xff0c;事实上(1) 申请更大空间 (…

sa-token整合oauth2

sa-token 是一个轻量级 Java 权限认证框架&#xff0c;而 OAuth 2.0 是一个开放标准&#xff0c;允许第三方应用获取对HTTP服务上用户帐户的有限访问权限&#xff0c;无需用户提供用户名和密码。将 sa-token 与 OAuth 2.0 整合可以使得你的 Java 应用支持更加灵活的认证和授权机…

快速理解Laravel容器(IOC、DI、Provider、Contract)

源码理解思维的提升 分享一些个人见解。 Laravel里面的某些概念&#xff0c;就像魔术一样&#xff0c;看起来很厉害&#xff0c;当知道魔术怎么变的&#xff0c;就会认为也不过如此。所以不必感觉Laravel里有些概念难以理解。 应当抛除被框架约束思维的枷锁&#xff0c;用PHP…

vuetify3.0+tailwindcss+vite最新框架

1、根据vuetify官网下载项目 安装vuetify项目 2、根据tailwindcss官网添加依赖 添加tailwindcss依赖 3、 配置main.ts // main.ts import "./style.css"4、使用 <template><h1 class"text-3xl font-bold underline">Hello world!</…

解密 Grupo MasMovil 使用 ClickHouse 监控无线网络

本文字数&#xff1a;4151&#xff1b;估计阅读时间&#xff1a;11 分钟 作者&#xff1a;Rodrigo Aguirregabiria Herrero, Grupo MasMovil 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 我们很高兴与大家分享来自西班牙最大的电信…

数据类型总结

1 引言 在计算机的世界里&#xff0c;数据类型是被人类定义出来的&#xff0c;方便人去更好地理解、辨别数据。计算机只能识别二进制数&#xff0c;不可能要求写代码时&#xff0c;只是输入一些0/1的东西。通过定义数据类型&#xff0c;可以让人和计算机更好地“沟通”&#x…

如何评价微软发布的Phi-3,手机都可以运行的小模型

前几天才刚刚发布了Llama 3&#xff0c;今天微软就出手了&#xff0c;发布了小而精的phi-3 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 刚刚发布的Phi-3系列小模型技术报告&#xff0c;引起AI圈热议。 添加图片注释&#xff0c;不超过 140 字&#x…

【数据结构】三、栈和队列:1.栈的基础(从数据结构三要素讨论:逻辑结构、物理结构(存储结构)、数据运算(基本操作))

文章目录 栈Stack逻辑结构物理&#xff08;存储&#xff09;结构基本操作常考题型 栈Stack 逻辑结构 栈&#xff08;Stack&#xff09;是只允许在一端进行插入或删除操作的线性表。 重要术语&#xff1a;栈顶&#xff08;现在能放入的一段&#xff09;&#xff0c;栈底&…

光接入网络的超宽带半导体光放大器

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 新颖的双有源层结构获得宽增益光谱&#xff0c;应用于多波单纤双向光放大 ----翻译Xiao Sun等人2016年撰写的文章&#xff0c;文中给出了宽光谱SOA的一种新颖的结构设计方法和仿真结果&#xff0c;但并未给…

JavaVue 借助json传递数据

由前端向后端发送一个json键值对 <template><div><button click"sendRequest">发送请求</button></div> </template><script setup> import axios from axios;const sendRequest () > {const jsonData {key1: value…