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

Java的Lambda表达式的使用

Lambda表达式是Java 8中引入的一个重要特性,它是一种简洁而强大的语法结构,可以用于替代传统的匿名内部类。

Lambda表达式的语法结构如下:

(parameters) -> expression

或者

(parameters) -> { statements; }

其中,parameters是一个逗号分隔的参数列表,可以为空;expression是一个表达式,或者一组语句,可以是块语句,用于执行某些操作。

Lambda表达式通常用于替代匿名内部类,例如:

button.addActionListener(event -> System.out.println("Hello, world!"));

上面的代码使用Lambda表达式来定义一个事件处理程序,当按钮被点击时,将打印“Hello, world!”。在这个例子中,Lambda表达式只有一个参数,并且只执行一条语句,因此可以使用单个参数和表达式的简化语法。

Lambda表达式可以在很多场景下使用,例如在集合中进行遍历、排序、过滤等操作,或者作为方法参数和返回值。它可以大大简化代码,提高开发效率。

1. java集合遍历方法和Lambda方法

1.1. 使用迭代器遍历集合

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");Iterator<String> it = list.iterator();
while (it.hasNext()) {String s = it.next();System.out.println(s);
}

1.2. 使用增强for循环遍历集合

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");for (String s : list) {System.out.println(s);
}

使用Lambda表达式遍历集合

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");list.forEach(s -> System.out.println(s));

2. 排序示例

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3. 线程示例

new Thread(() -> {System.out.println("Hello, world!");
}).start();

4. 文件过滤示例

File dir = new File(".");
File[] files = dir.listFiles(file -> file.getName().endsWith(".java"));

5. 使用lambda筛选数组的示例

int[] numbers = { 1, 2, 3, 4, 5 };
int[] evenNumbers = Arrays.stream(numbers).filter(n -> n % 2 == 0).toArray();

6. 函数式接口示例

interface MyFunction {void apply(String s);
}public void doSomething(MyFunction f, String s) {f.apply(s);
}doSomething((String s) -> System.out.println(s), "Hello world!");

相关文章:

Java的Lambda表达式的使用

Lambda表达式是Java 8中引入的一个重要特性&#xff0c;它是一种简洁而强大的语法结构&#xff0c;可以用于替代传统的匿名内部类。 Lambda表达式的语法结构如下&#xff1a; (parameters) -> expression或者 (parameters) -> { statements; }其中&#xff0c;paramet…...

Spring MVC 源码 - HandlerMapping 组件(三)之 AbstractHandlerMethodMapping

HandlerMapping 组件HandlerMapping 组件&#xff0c;请求的处理器匹配器&#xff0c;负责为请求找到合适的 HandlerExecutionChain 处理器执行链&#xff0c;包含处理器&#xff08;handler&#xff09;和拦截器们&#xff08;interceptors&#xff09;handler 处理器是 Objec…...

超店有数,为什么商家要使用tiktok达人进行营销推广呢?

近几年互联网发展萌生出更多的短视频平台&#xff0c;而tittok这个平台在海外也越来越火爆。与此同时&#xff0c;很多商家也开始用tiktok进行营销推广。商家使用较多的方式就是达人营销&#xff0c;这种方法很常见且转化效果不错。那为什么现在这么多商家喜欢用tiktok达人进行…...

【分享】订阅万里牛集简云连接器同步企业采购审批至万里牛系统

方案场景 面临着数字化转型的到来&#xff0c;不少公司希望实现业务自动化需求&#xff0c;公司内部将钉钉作为办公系统&#xff0c;万里牛作为ERP系统&#xff0c;两个系统之前的数据都储存在各自的后台&#xff0c;导致数据割裂&#xff0c;数据互不相通&#xff0c;人工手动…...

C++类和对象_02----对象模型和this指针

目录C对象模型和this指针1、成员变量和成员函数分开存储1.1、空类大小1.2、非空类大小1.3、结论2、this指针概念2.1、解决名称冲突2.2、在类的非静态成员函数中返回对象本身&#xff0c;可使用return *this2.3、拷贝构造函数返回值为引用的时候&#xff0c;可进行链式编程3、空…...

瑞芯微RK3568开发:烧录过程

进入rk3568这款芯片的烧录模式共有3种方式&#xff0c;先讲需要准备的环境要求。 一、软硬件环境 1、配套sdk版本的驱动DriverAssitant_vx.x.x和RKDevTool_Release_vx.x&#xff0c;版本不对应可能无法烧录&#xff0c;建议直接在sdk压缩包里获取&#xff1b; 2、如果正确安…...

【数据结构】——树和二叉树的概念

目录 1.树概念及结构 1.1树的概念 1.2 树的相关性质 1.3 树的表示 1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构 2.1二叉树概念 2.2 特殊的二叉树 2.3 二叉树的性质 1.树概念及结构 1.1树的概念 树是一种非线性的数据结构…...

Meta分析在生态环境领域里的应用

Meta分析&#xff08;Meta Analysis&#xff09;是当今比较流行的综合具有同一主题的多个独立研究的统计学方法&#xff0c;是较高一级逻辑形式上的定量文献综述。20世纪90年代后&#xff0c;Meta分析被引入生态环境领域的研究&#xff0c;并得到高度的重视和长足的发展&#x…...

PrivateLoader PPI服务发现RisePro恶意软件窃取分发信息

称为PrivateLoader的按安装付费&#xff08;PPI&#xff09;软件下载器服务正用于恶意软件RisePro的信息窃取。Flashpoint 于 2022 年 12月13日发现了新的窃取者&#xff0c;此前发现了在名为Russian Market的非法网络犯罪市场上使用该恶意软件泄露的“几组日志”。RisePro是一…...

SQL93 返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(一)

描述你想知道订购 BR01 产品的日期&#xff0c;有表OrderItems代表订单商品信息表&#xff0c;prod_id为产品id&#xff1b;Orders表代表订单表有cust_id代表顾客id和订单日期order_date&#xff1b;Customers表含有cust_email 顾客邮件和cust_id顾客idOrderItems表prod_idorde…...

Git ---- 概述

Git ---- 概述1. 何为版本控制2. 为什么需要版本控制3. 版本控制的工具集中式版本控制工具分布式版本控制工具4. Git 简史5. Git 工作机制6. Git 和代码托管中心Git 是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目。 Git 易于学…...

用 tensorflow.js 做了一个动漫分类的功能(二)

前言&#xff1a;前面已经通过采集拿到了图片&#xff0c;并且也手动对图片做了标注。接下来就要通过 Tensorflow.js 基于 mobileNet 训练模型&#xff0c;最后就可以实现在采集中对图片进行自动分类了。这种功能在应用场景里就比较多了&#xff0c;比如图标素材站点&#xff0…...

小林coding

一、图解网络 问大家&#xff0c;为什么要有TCP/Ip网络模型&#xff1f; 对于同一台设备上的进程通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;对于不同设备上的进程通信&#xff0c;就需要有网络通信&#xff0c;而设备是…...

操作系统真相还原_第6章:完善内核

文章目录6.1 函数调用约定简介6.2 汇编语言和C语言混合编程汇编调用CC调用汇编6.3 实现打印函数流程程序编译并写入硬盘执行6.4 内联汇编简介汇编语言AT&T语法基本内联汇编扩展内联汇编6.1 函数调用约定简介 调用约定&#xff1a; calling conventions 调用函数时的一套约…...

SmoothNLP新词发现算法的改进实现

SmoothNLP新词发现算法的改进实现 背景介绍 新词发现也叫未登录词提取&#xff0c;依据 《统计自然语言处理》(宗成庆)&#xff0c;中文分词有98%的错误来自"未登录词"。即便早就火遍大江南北的Bert也不能解决"未登录词"的Encoding问题&#xff0c;便索性…...

实时渲染为什么快,能不能局域网部署点量云

提到渲染很多有相关从业经验的人员可能会想起&#xff0c;自己曾经在电脑上渲染一个模型半天或者更长的 时间才能完成的经历。尤其是在项目比较着急的时候&#xff0c;这种煎熬更是难受。但现在随着实时渲染和云渲染行业的发展&#xff0c;通过很多方式可以提升渲染的时间和效率…...

网络游戏该如何防护ddos/cc攻击

现在做网络游戏的企业都知道服务器的安全对于我们来说很重要&#xff01;互联网上面的 DDoS 攻击和 CC 攻击等等无处不在&#xff0c;而游戏服务器对服务器的防御能力和处理能力要求更高&#xff0c;普通的服务器则是比较注重各方面能力的均衡。随着游戏行业的壮大&#xff0c;…...

项目管理体系1-4练习题1-10答案

题目1 每周一次的项目会议上&#xff0c;一位团队成员表示在修订一项可交付成果时&#xff0c;一名销售经理对客户服务过程想出一项变更讨论&#xff0c;影响到整个项目&#xff0c;项目经理对销售参与到项目可交付成果感到吃惊&#xff0c;经理事先应该怎么做去阻止这些情况&…...

sHMIctrl智能屏幕使用记录

手上有个案子&#xff0c;“按压机器人”&#xff0c;功能是恒定一个力按下一定时间。 屏幕选型使用“sHMIctrl”&#xff0c;一下记录使用过程中遇到的问题以及解决方法。 目录 问题1&#xff1a;按键控件做定时触发&#xff0c;模拟运行时触发不了。 问题2&#xff1a;厂家…...

2.20 crm day01 配置路由router less使用 axios二次封装

需求&#xff1a; 目录 1.配置路由 2.less使用 vue2使用以下版本 3.axios二次封装 1.配置路由 1.1.1 官方链接&#xff1a;安装 | Vue Router npm i vue-router3.6.5 注意&#xff1a;vue2项目不能用vue-router四版本以上 1.2.1.创建router/index.js 在该文件中 //1.引…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

js 设置3秒后执行

如何在JavaScript中延迟3秒执行操作 在JavaScript中&#xff0c;要设置一个操作在指定延迟后&#xff08;例如3秒&#xff09;执行&#xff0c;可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法&#xff0c;它接受两个参数&#xff1a; 要执行的函数&…...

Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用

Linux 内存管理调试分析&#xff1a;ftrace、perf、crash 的系统化使用 Linux 内核内存管理是构成整个内核性能和系统稳定性的基础&#xff0c;但这一子系统结构复杂&#xff0c;常常有设置失败、性能展示不良、OOM 杀进程等问题。要分析这些问题&#xff0c;需要一套工具化、…...

Spring事务传播机制有哪些?

导语&#xff1a; Spring事务传播机制是后端面试中的必考知识点&#xff0c;特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发&#xff0c;全面剖析Spring事务传播机制&#xff0c;帮助你答得有…...

CSP信奥赛C++常用系统函数汇总

# CSP信奥赛C常用系统函数汇总## 一、输入输出函数### 1. cin / cout&#xff08;<iostream>&#xff09; cpp int x; cin >> x; // 输入 cout << x << endl;// 输出 优化&#xff1a;ios::sync_with_stdio(false); 可提升速度 2. scanf() /…...

【电路笔记】-变压器电压调节

变压器电压调节 文章目录 变压器电压调节1、概述2、变压器电压调节3、变压器电压调节示例14、变压器电压调节示例25、变压器电压调节示例36、总结变压器电压调节是变压器输出端电压因连接负载电流的变化而从其空载值向上或向下变化的比率或百分比值。 1、概述 电压调节是衡量变…...

sql列中数据通过逗号分割的集合,按需求剔除部分值

前置 不会REGEXP 方法的需要在这里学习一下下 记sql字段逗号分隔&#xff0c;通过list查询 功能点 现有一个表格中一列存储的是标签的集合&#xff0c;通过逗号分割 入下&#xff1a; 其中tag_ids是逗号分割的标签&#xff0c;现在需要删除标签组中的一些标签&#xff0c;因…...