当前位置: 首页 > news >正文

Lambda表达式(Java)

1.Lambda表达式

        Lambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。

        “->”(Lambda操作符)左边:Lambda表达式的所有参数。右边:Lambda体,Lambda需要执行的功能。

public class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("这是一个实现Runnable接口的子线程!");}
}
public class Test {public static void main(String[] args) {MyRunnable myRunnable = new MyRunnable();//等价于Runnable runnable = new Runnable(){@Overridepublic void run() {System.out.println("这是一个实现Runnable接口的子线程!");}};//等价于Runnable runnable1 = ()-> System.out.println("这是一个实现Runnable接口的子线程!");Thread thread = new Thread(myRunnable);thread.start();//等价于new Thread(new Runnable() {@Overridepublic void run() {System.out.println("这是一个实现Runnable接口的子线程!");}}).start();//等价于new Thread(() -> System.out.println("这是一个实现Runnable接口的子线程!")).start();}

        1.无参、无返回值

public interface Www {public abstract void print1();//无参、无返回值
}public class WwwTest {public static void main(String[] args) {Www www1 = new Www() {@Overridepublic void print1() {System.out.println("无参、无返回值");}};Www www2 = ()-> {System.out.println("无参、无返回值")};//等价于 当Lambda体只有一条语句的时候,return和{}可以省略掉Www www3 = ()-> System.out.println("无参、无返回值");//以上三种方法相当于创建一个类实现了Www接口。//当运行方法时,要使用对象名.print();}
}

        2.无参、有返回值

public interface Www {public abstract String print2();//无参、有返回值//public abstract String print3(String name);//有参、有返回值//public abstract String print4(String name,int i);//有多个参、有返回值
}package lambda;public class WwwTest {public static void main(String[] args) {Www www1 = new Www() {@Overridepublic String print2() {return "无参、有返回值";}Www www2 = ()-> "无参、有返回值";//等价于Www www3 = ()->{ return  "无参、有返回值";};//以上三种方法相当于创建一个类实现了Www接口。//当运行方法时,要使用对象名.print();}
}

        3.有参、有返回值

public interface Www {public abstract String print3(String name);//有参、有返回值
}public class WwwTest {public static void main(String[] args) {Www www1 = new Www() {@Overridepublic String print3(String name) {System.out.println(name);return "有参、有返回值";}Www www2 = (name)->{System.out.println(name);return "有参、有返回值";};//等价于  只有一个参数时,可以省略()Www www3 = name->{System.out.println(name);return "有参、有返回值";};}
}

        4.有多个参、有返回值

public interface Www {public abstract String print4(String name,int i);//有多个参、有返回值
}public class WwwTest {public static void main(String[] args) {Www www1 = new Www() {@Overridepublic String print4(String name, int i) {System.out.println(name+i);return "有多个参、有返回值";}};Www www2 = (name, i) -> {System.out.println(name+i);return "有多个参、有返回值";};}
}

        5.类型推断:数据类型可以省略,因为编译器可以推断得出,称为“类型推断”。

public interface Www {public abstract String print4(String name,int i);//有多个参、有返回值
}public class WwwTest {public static void main(String[] args) {Www www1 = new Www() {@Overridepublic String print4(String name, int i) {System.out.println(name+i);return "有多个参、有返回值";}};Www www2 = (String name,int i) -> {System.out.println(name+i);return "有多个参、有返回值";};//等价于Www www3 = (name, i) -> {System.out.println(name+i);return "有多个参、有返回值";};}
}

2.forEach+Lambda

        1.使用forEach和Lambda循环list集合

public class ArrayList {public static void main(String[] args) {List<String> list = new java.util.ArrayList<>();list.add("a");list.add("b");list.add("c");list.add("d");list.forEach(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}});System.out.println("--------------------");list.forEach(s -> System.out.println(s));}
}

        2.使用forEach和Lambda循环map集合

public class Student {private String name;public Student(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}public class HashMap1 {public static void main(String[] args) {Map<String,Student> map = new HashMap<>();map.put("a",new Student("张三"));map.put("b",new Student("李四"));map.put("c",new Student("王五"));map.forEach((key,value)-> System.out.println(key+"======"+ value.getName()));//使用for增强循环遍历map集合System.out.println("=====================");Set keys = map.keySet();//返回键的集合for (Object key : keys) {System.out.println(key+"====="+map.get(key).getName());//get(key)根据键返回值}}
}

3.函数接口

        只包含一个抽象方法的接口,称为函数式接口。并且可以使用lambda表达式来创建该接口的对象,可以在任意函数式接口上使用 @FunctionalInterface 注解,来检测它是否是符合函数式接口。同时javac也会包含一条声明,说明这个接口是否符合函数式接口。

        Java中的函数式编程体现就是Lambda表达式,所以函数式接口即可以适用于Lambda使用的接口。

@FunctionalInterface
public interface Www {public abstract void print();
}public class WwwTest {public static void main(String[] args) {Www www1 = new Www() {@Overridepublic void print() {System.out.println("aaaa");}};www1.print();Www www2 = ()-> System.out.println("aaaa");www2.print();}
}

当接口中写入两个抽象方法时,会报错。

        ·

相关文章:

Lambda表达式(Java)

1.Lambda表达式 Lambda是一个匿名函数&#xff0c;我们可以将Lambda表达式理解为一段可以传递的代码&#xff08;将代码像数据一样传递&#xff09;。 “->”&#xff08;Lambda操作符&#xff09;左边&#xff1a;Lambda表达式的所有参数。右边&#xff1a;Lambda体&#x…...

不同的子序列

题目 给定一个字符串 s 和一个字符串 t &#xff0c;计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指&#xff0c;通过删除一些&#xff08;也可以不删除&#xff09;字符且不干扰剩余字符相对位置所组成的新字符串。&#xff08;例如&#xff0c;“ACE” 是 “…...

CI24R1——精简版Si24R1,高性价比替代XN297开发资料

CI24R1为了减低用户的开发时间&#xff0c;将2.4G芯片开发出2.4G小模块&#xff0c;用户直接贴片调试&#xff0c;大大降低了开发时间跟生产工序。广泛应用在灯控、鼠标、玩具等智能物联网产品。 CI24R1小模块&#xff08;内置天线&#xff09; 是 2.4GHz 模块。该模块核心处理…...

MySQL递归查询笔记

目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询所有兄弟节点&#xff08;同级节点&#xff09; 六、获取祖先节点及其所有子节点 七、查询每个节点之间的层级关系 八、查询指定节点之间的层级关系 一、创建表…...

java中的位运算

位运算是对整数的二进制位进行操作的一种运算。在java中long, int, short, char和byte类型都可以使用位运算。 位运算的过程如下&#xff1a;首先将十进制整数转换成二进制表示形式&#xff0c;然后将位运算符应用于每个二进制数位&#xff0c;并计算结果。最后&#xff0c;将…...

llamafactory0.9.0微调qwen2vl

LLaMA-Factory/data/README_zh.md at main hiyouga/LLaMA-Factory GitHubEfficiently Fine-Tune 100+ LLMs in WebUI (ACL 2024) - LLaMA-Factory/data/README_zh.md at main hiyouga/LLaMA-Factoryhttps://github.com/hiyouga/LLaMA-Factory/blob/main...

Electron 隐藏顶部菜单

隐藏前&#xff1a; 隐藏后&#xff1a; 具体设置代码&#xff1a; 在 main.js 中加入这行即可&#xff1a; // 导入模块 const { app, BrowserWindow ,Menu } require(electron) const path require(path)// 创建主窗口 const createWindow () > {const mainWindow ne…...

软件测试学习笔记丨curl命令发送请求

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32332 一、简介 cURL是一个通过URL传输数据的&#xff0c;功能强大的命令行工具。cURL可以与Chrome Devtool工具配合使用&#xff0c;把浏览器发送的真实请求还原出来&#xff0c;附带认证信…...

STM32+PWM+DMA驱动WS2812 —— 2024年9月24日

一、项目简介 采用STM32f103C8t6单片机&#xff0c;使用HAL库编写。项目中针对初学者驱动WS2812时会遇到的一些问题&#xff0c;给出了解决方案。 二、ws2812驱动原理 WS2812采用单线归零码的通讯方式&#xff0c;即利用高低电平的持续时间来确定0和1。这种通信方式优点是只需…...

MMD模型及动作一键完美导入UE5-IVP5U插件方案(二)

1、下载并启用IVP5U插件 1、下载IVP5U插件, IVP5U,点击Latest下载对应引擎版本,将插件放到Plugins目录,同时将.uplugin文件的EnableByDefault改为false 2、然后通过Edit->Plugins启用插件 2、导入pmx模型 1、直接在Content的某个目录拖入pmx模型,选择默认参数 2、…...

C++函数指针

函数指针是将一个函数赋值给一个变量的方法 我们使用函数的方法&#xff0c;可能会给函数传入参数&#xff0c;或者传入参数&#xff0c;函数可能有返回值&#xff0c;也可能没有返回值&#xff08;void&#xff09; 下面这个例子&#xff0c;我们调用了HelloWorld函数 auto关…...

汽车信息安全 -- 再谈车规MCU的安全启动

目录 1. 安全启动流程回顾 1.1 TC3xx的安全启动 1.2 RH850的安全启动 1.3 NXP S32K3的安全启动 1.4 小结 2.信任链的问题 3.国产HSM IP的拓展 今天接着 汽车信息安全 -- 存到HSM中的密钥还需包裹吗&#xff1f;-CSDN博客这篇文章深究另一个重要功能-- 安全启动。 该文章…...

[Linux]从零开始的Linux的远程方法介绍与配置教程

一、为什么需要远程Linux 相信大家在学习Linux时&#xff0c;要么是使用Linux的虚拟机或者在物理机上直接安装Linux。这样确实非常方便&#xff0c;我们也能直接看到Linux的桌面或者终端。既然我们都能直接看到终端或者Linux的桌面了&#xff0c;那我们为什么还要远程Linux呢&a…...

手机改IP地址怎么弄?全面解析与操作指南

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;其重要性不言而喻。有时候&#xff0c;出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。然而&#xff0c;对于大多数普通用户来说&#xff0c;如何操作可能还是…...

【React】useState 和 useRef:项目开发中该如何选择

如果你正踏入用 React 进行网页开发的世界&#xff0c;那你可能已经遇到了像 useState 和 useRef 这样的术语。这两个 Hook 在构建交互性和动态组件时起着至关重要的作用。 下面&#xff0c;我们将探讨它们是什么&#xff0c;它们的功能&#xff0c;它们的区别&#xff0c;并通…...

python装饰器用法

为什么用装饰器&#xff1f; 第一个原因是&#xff0c;使用装饰器可以提升代码复用&#xff0c;避免重复冗余代码。如果我有多个函数需要测量执行时间&#xff0c;我可以直接将装饰器应用在这些函数上&#xff0c;而不是给多个函数加上一样的代码。这样的代码既元余也不方便后…...

AI 写作太死板?原因竟然是这个!

有些同学跟我埋怨说AI生成的文章太死板&#xff0c;一堆的“首先、其次、然后、再次、接着、总而言之……”&#xff0c;说话太官方&#xff0c;内容还很水。 想要让它模仿谁的语气&#xff0c;或者谁的文章&#xff0c;一点儿都不像。 名人都不模仿不了&#xff0c;更别说模…...

ansible实用模块

简介 ansible是基于 paramiko 开发的,并且基于模块化工作&#xff0c;本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块&#xff0c;ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents&#xff0c;因为它们是基于ssh来和远程主机通讯的。…...

【JavaScript】JIT

JIT实际上指&#xff0c;JS的编译过程、运行时。 Just in Time 在传统的编译语言里&#xff0c;比如JAVA、Go等&#xff0c;是提前编译的&#xff0c;它们的执行是先在本地编译出一个"东西"&#xff0c;然后在放到服务器上运行。 提前编译的三大过程&#xff1a; …...

Matlab实现麻雀优化算法优化回声状态网络模型 (SSA-ESN)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一种新兴的群体智能优化算法&#xff0c;灵感来源于麻雀的觅食行为及其在面临危险时的预警机制。SSA通过模拟麻雀的这些自然行为来寻找问题…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 &#x1f680; 深度解析&#xff1a;etcd 在 Milvus 向量数据库中的关键作用 &#x1f4a1; 什么是 etcd&#xff1f; &#x1f9e0; Milvus 架构简介 &#x1f4e6; etcd 在 Milvus 中的核心作用 &#x1f527; 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...