lambda表达式的学习和使用

news/2024/4/19 13:54:29/文章来源:https://blog.csdn.net/weixin_39038328/article/details/136577451

一、函数式编程思想的概述

在数学中,函数是有输入量和输出量的一套计算方案,就是拿“数据做操作”
在面向对象的编程中强调,必须通过对象的形式来做事情
函数式思想则尽量的忽略对象的复杂语法,“强调做什么,而不是以什么形式去做”
lambda表达式就是函数式思想的体现。

二、体验lambda表达式

需求:启动一个线程,在控制台输出一句话:多线程启动了

方案1:

  • 定义一个类MyRunnable接口,重写run()方法
  • 创建MyRunnable类的对象
  • 创建Thread类对象,把MyRunnable的对象作为构造参数传递
  • 启动线程
public class LambdaDemo {public static void main(String[] args) {MyRunnable myRunnable = new MyRunnable();Thread t = new Thread(myRunnable);t.start();}
}
class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("多线程启动了");}}

方案2:匿名内部类的方式改进

public class LambdaDemo {public static void main(String[] args) {// 匿名内部类的方式改进new Thread(new Runnable() {@Overridepublic void run() {System.out.println("多线程启动了");}}).start();}
}

方案3:lambda表达式的方式进行改进

public class LambdaDemo {public static void main(String[] args) {// lambda表达式的方式进行改进new Thread( () ->{System.out.println("多线程启动了");}).start();}
}

三、lambda表达式的标准格式

lambda表达式的三要素:形式参数、箭头、代码块
lambda表达式的哥格式

  • 格式:(形式参数)->{代码块}
  • 形式参数:如果有多个参数,参数之间用逗号分开;如果没有参数,留空白即可
  • ->:由英文中划线和大于符号组成,固定写法。代表执行动作
  • 代码块:是我们具体要做的事情,也就是我们写的方法体和内容

四、lambda表达式的练习

lambda表达式的使用前提

  • 有一个接口
  • 接口当中有且仅有一个抽象方法

练习1:无参无返回

/*** 无参无返回值*/
public interface NoReturnNoParam {void method();
}

public class LambdaDemo {public static void main(String[] args) {//无参无返回NoReturnNoParam noReturnNoParam = () -> {System.out.println("NoReturnNoParam");};noReturnNoParam.method();}
}

2.一个参数无返回

/*** 一个参数无返回*/
public interface NoReturnOneParam {void method(int a);
}
//一个参数无返回
NoReturnOneParam noReturnOneParam = (int a) -> {System.out.println("NoReturnOneParam param:" + a);
};
noReturnOneParam.method(6);

3.以下每一个都是一个接口

/*** 多参数无返回*/
public interface NoReturnMultiParam {void method(int a, int b);
}/*** 多个参数有返回值*/
public interface ReturnMultiParam {int method(int a, int b);
}/*** 一个参数有返回值*/
public interface ReturnOneParam {int method(int a);
}

以下是案例

public class LambdaDemo {public static void main(String[] args) {//无参有返回值ReturnNoParam returnNoParam = () -> {System.out.print("ReturnNoParam");return 1;};int res = returnNoParam.method();System.out.println("return:" + res);//一个参数有返回值ReturnOneParam returnOneParam = (int a) -> {System.out.println("ReturnOneParam param:" + a);return 1;};int res2 = returnOneParam.method(6);System.out.println("return:" + res2);//多个参数有返回值ReturnMultiParam returnMultiParam = (int a, int b) -> {System.out.println("ReturnMultiParam param:" + "{" + a + "," + b +"}");return 1;};int res3 = returnMultiParam.method(6, 8);System.out.println("return:" + res3);}
}

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

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

相关文章

【论文精读】融合知识图谱和语义匹配的医疗问答系统

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

Java零基础-数组的初始化

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

深度学习与机器学习:互补共进,共绘人工智能宏伟蓝图

在人工智能的广阔天地中,深度学习与机器学习如同两支强大的队伍,各自闪耀着独特的光芒,却又携手共进,共同书写着智能的辉煌篇章。尽管深度学习是机器学习的一个分支,但它们在模型构建、特征提取以及应用场景等多个方面…

FFmpeg--FLV格式

文章目录 FLV组成:字段信息flv headertag headeraduio tag datavideo tag data FLV组成: 一种流媒体格式, 当前主流的视频网站基本都支持FLV格式封装,文件后缀为.flv Previous Tag Size 大小为4个字节,内容为前面一个Tag字节大小…

2024 MCM数学建模美赛2024年A题复盘,思路与经验分享:资源可用性与性别比例 | 七鳃鳗性别比例变化对七鳃鳗种群的影响(三)

目录 分析题目 建立模型 计算结果 分析结果 代码 分析题目 对于第二问:探究七鳃鳗性别比例变化对七鳃鳗种群的影响。我们来分析一下题目。 要探究七鳃鳗性别比例变化对七鳃鳗种群的影响,我们就要搞清楚性别平衡时,它的种群多大&#x…

YUNBEE云贝:3月9日-PostgreSQL中级工程师PGCE认证培训

课程介绍 根据学员建议和市场需求,规划和设计了《PostgreSQL CE 认证课程》,本课程以内部原理、实践实战为主,理论与实践相结合。课程包含PG 简介、安装使用、服务管理、体系结构等基础知识。同时结合一线实战案例, 面向 PG 数据库的日常维护管理、服务和…

HTML5 基础1

<b> 和 <strong>的异同 相同点&#xff1a;在显示上&#xff0c;这两个标签都是加粗文本。 不同点&#xff1a;使用网页阅读器阅读网页&#xff08;盲人使用&#xff09;&#xff0c;strong 会重读&#xff0c;b 则不会。从起源上来说&#xff0c;strong 是为了在…

Spring Boot中SQL语句报错

报错原因&#xff1a; You have an error in your SQL syntax 你的SQL语句出现错误 报错位置&#xff1a; check the manual that corresponds to your MySQL server version for the right syntax to use near :/sql/schema.sql.t_film at line 1 在:/sql/schema.sql附近使用…

Logseq电脑端+安卓端同步gitee或github

文章目录 0.初衷1.电脑端1.1 新建仓库1.2 克隆项目&#xff0c;生成秘钥1.3 添加图谱&#xff0c;选择文件目录&#xff0c;我是原本就有笔记&#xff0c;所以会如下所示。1.4 下载脚本文件1.5赋权限 &#xff08;windows可跳过&#xff09;1.6 修改脚本命令1.7 logseq设置同步…

六、长短时记忆网络语言模型(LSTM)

为了解决深度神经网络中的梯度消失问题&#xff0c;提出了一种特殊的RNN模型——长短期记忆网络&#xff08;Long Short-Term Memory networks, LSTM&#xff09;&#xff0c;能够有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略。 长短时记忆网络原理…

图机器学习(4)-面向连接层面的人工特征工程

0 问题定义 通过已经连接去猜未知连接&#xff1a; 有两个思路&#xff1a; &#xff08;1&#xff09;直接提取link的特征&#xff0c;把link变成D维向量&#xff1b; &#xff08;2&#xff09;把link两端节点的D维向量拼在一起&#xff0c;缺点&#xff1a;丢失了link本身…

盲盒抽卡机小程序——开启神秘之旅!

亲爱的朋友们&#xff0c;欢迎来到盲盒抽卡机小程序&#xff01;这里&#xff0c;是一个充满神秘与惊喜的世界&#xff0c;让你随时随地体验抽卡的乐趣。在这里&#xff0c;你可以轻松尝试各种盲盒&#xff0c;发现隐藏的宝藏&#xff0c;感受心跳加速的刺激。 【丰富多样的盲…

CSS实现水波球

使用CSS实现水波球效果&#xff08;单个的水波球&#xff09; 效果如下&#xff1a; <template><div class"indicator" ref"indicator" :style"border-color:${borderCol}"><span class"text">{{ completion }}%…

初识Hive

官网地址为&#xff1a; Design - Apache Hive - Apache Software Foundation 一、架构 先来看下官网给的图&#xff1a; 图上显示了Hive的主要组件及其与Hadoop的交互。Hive的主要组件有&#xff1a; UI&#xff1a; 用户向系统提交查询和其他操作的用户界面。截至2011年&…

2024届 C++ 刷题 笔试强训 Day 01

选择题 01 以下for循环的执行次数是&#xff08;&#xff09; for(int x 0, y 0; (y 123) && (x < 4); x); A 是无限循环 B 循环次数不定 C 4次 D 3次 解题思路&#xff1a; 我们直接来看本道题中最关键的部分&#xff1a;(y 123) && (x < 4)。 (y…

小小磁珠对EMC的作用竟然这么大?

磁珠&#xff0c;作为一种电感型的EMI静噪滤波器&#xff0c;其外观与电感颇为相似。目前&#xff0c;应用最为广泛的磁珠类型是铁氧体磁珠&#xff0c;也称作Ferrite Bead。它的度量单位是欧姆&#xff0c;根据型号的不同&#xff0c;磁珠能够抑制的频率范围广泛&#xff0c;覆…

ELK介绍使用

文章目录 一、ELK介绍二、Elasticsearch1. ElasticSearch简介&#xff1a;2. Elasticsearch核心概念3. Elasticsearch安装4. Elasticsearch基本操作1. 字段类型介绍2. 索引3. 映射4. 文档 5. Elasticsearch 复杂查询 三、LogStash1. LogStash简介2. LogStash安装 四、kibana1. …

银河麒麟服务器ky10 server wvp镜像制作

在线安装docker yum install docker -y cat >/etc/docker/daemon.json<<EOF{"registry-mirrors": ["https://registry.docker-cn.com","https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com"]} EOF systemctl start …

Java设计模式:适配器模式的三种形式(五)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 适配器模式用于将一个类的接口转换为客户端所期望的另一个接口&#xff0c;以实现不兼容接口之间的协作。它像电器插头转换器一样…

VIVADO使用过程中一些注意点

若要将状态改回成“synth_design Complete”&#xff0c;可进行如下操作&#xff1a; 1.清空IP缓存区数据&#xff1a;在Tcl Console窗口中输入“config_ip_cache ‑clear_output_repo”&#xff0c;此时工程中IP缓存数据被清除&#xff1b; 2.禁用IP缓存&#xff1a;在Tcl C…