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

Lambda 表达式的常见用法

文章目录

  • Lambda 表达式的常见用法
    • 使用Lambda表达式集合遍历
    • 使用Lambda表达式排序
    • 使用Lambda表达式过滤
    • 使用Lambda表达式映射
    • 使用Lambda表达式归约
    • 使用Lambda表达式分组
    • 使用Lambda表达式函数式接口的实现
    • 使用Lambda表达式线程的创建
    • 使用Lambda表达式进行Optional 操作
    • 使用Lambda表达式进行Stream的流操作

Lambda 表达式的常见用法

使用Lambda表达式集合遍历

/*遍历集合*/
List<String> fruitList = Arrays.asList("apple","banana","orange","mango","grape");
//传统方式
for (String s : fruitList) {System.out.println(s);
}
//lambda
fruitList.forEach(System.out::println);

使用Lambda表达式排序

        /*集合排序*/List<String> fruitList = Arrays.asList("apple","banana","orange","mango","grape");//传统方式Collections.sort(fruitList, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});//lambdaCollections.sort(fruitList, ((o1, o2) -> o1.compareTo(o2)));

使用Lambda表达式过滤

        /*集合过滤 拿到首字母是 a 的元素*/List<String> fruitList = Arrays.asList("apple","banana","orange","mango","grape");//传统List<String> list1 = new ArrayList<>();for (String s : fruitList) {if (s.startsWith("a")) {list1.add(s);}}//lambdaList<String> list2 = fruitList.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());

使用Lambda表达式映射

        /*集合映射 映射出字段的长度*/List<String> fruitList = Arrays.asList("apple","banana","orange","mango","grape");//传统List<Integer> list1 = new ArrayList<>();for (String s : fruitList) {list1.add(s.length());}//lambdaList<Integer> list2 = fruitList.stream().map(s -> s.length()).collect(Collectors.toList());

使用Lambda表达式归约

        /*集合归约 list 所有字段累加*/List<Integer> sumList = Arrays.asList(1,2,3,4,5,6,8);//传统int sum1 = 0;for (Integer v : sumList) {sum1 += v;}//lambdaInteger sum2 = sumList.stream().reduce(0, (a, b) -> a + b);

使用Lambda表达式分组

        /*集合分组 list字段的长度进行分组*/List<String> fruitList = Arrays.asList("apple","banana","orange","mango","grape");//传统Map<Integer, List<String>> group1 = new HashMap<>();for (String s : fruitList) {if (!group1.containsKey(s.length())){group1.put(s.length(), new ArrayList<>());}group1.get(s.length()).add(s);}//lambdaMap<Integer, List<String>> group2 = fruitList.stream().collect(Collectors.groupingBy(String::length));

使用Lambda表达式函数式接口的实现

        //接口interface MyInterface {public void doSomething(String s);}/*实现接口*///传统方法MyInterface myInterface1 = new MyInterface() {@Overridepublic void doSomething(String s) {System.out.println(s);}};//lambdaMyInterface myInterface2 = (s) -> System.out.println(s);//或者MyInterface myInterface3 = System.out::println;

使用Lambda表达式线程的创建

        /*创建线程  实际开发中不要显示创建线程,最好用线程池*///传统Thread thread = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Hello World");}});thread.start();//lambdaThread thread1 = new Thread(() -> System.out.println("Hello World"));Thread thread2 = new Thread(System.out::println);Thread thread3 = new Thread(LambdaUsefullness::listreduceSum);
/*使用线程池举例*/ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 5, 2L, TimeUnit.SECONDS, new LinkedBlockingDeque<>(4), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());executor.execute(() ->{for (int i = 0; i < 10 ; i++) {System.out.println("Hello World分支线程===="+i);}});

使用Lambda表达式进行Optional 操作

        /*Lambda 方式配合Optional 操作*/String str = "Hello world";//传统校验if (!str.isEmpty()) {System.out.println(str.toUpperCase());}//lambdaOptional.ofNullable(str).map(String::toUpperCase).ifPresent(System.out::println);

使用Lambda表达式进行Stream的流操作

        /*lambda流操作 过滤包含 n 的字符串,并转大写,最后排序*/List<String> fruitList = Arrays.asList("apple","banana","orange","mango","grape");//传统List list1 = new ArrayList();for (String s : fruitList) {if (s.contains("n")) {list1.add(s.toUpperCase());}}Collections.sort(list1);//lambdaList<String> list2 = fruitList.stream().filter(s -> s.contains("n")).map(String::toUpperCase).sorted().collect(Collectors.toList());

相关文章:

Lambda 表达式的常见用法

文章目录 Lambda 表达式的常见用法使用Lambda表达式集合遍历使用Lambda表达式排序使用Lambda表达式过滤使用Lambda表达式映射使用Lambda表达式归约使用Lambda表达式分组使用Lambda表达式函数式接口的实现使用Lambda表达式线程的创建使用Lambda表达式进行Optional 操作使用Lambd…...

成本管理常用的ChatGPT通用提示词模板

成本分析&#xff1a;如何进行成本分析&#xff1f; 成本核算&#xff1a;如何进行成本核算&#xff1f; 成本控制&#xff1a;如何控制成本&#xff1f; 成本效益分析&#xff1a;如何进行成本效益分析&#xff1f; 成本预测&#xff1a;如何预测成本&#xff1f; 成本决…...

如何在PHP中处理日期和时间?

在 PHP 中&#xff0c;你可以使用内置的 DateTime 类和相关函数来处理日期和时间。以下是一些常见的日期和时间操作的示例&#xff1a; 使用 DateTime 类&#xff1a; 获取当前日期和时间&#xff1a; $currentDateTime new DateTime(); echo $currentDateTime->format(Y-…...

NO-IOT翻频,什么是翻频,电信为什么翻频

1.1 翻频迁移最终的目的就是减少网络的相互干扰&#xff0c;提供使用质量. 1.2 随着与日俱增的网络规模的扩大&#xff0c;网内干扰已成了影响网络的质量标准之一&#xff0c;为了保障电信上网体验&#xff0c;满足用户日益增长的网速需求,更好的服务客户&#xff0c;电信针对…...

云原生之深入解析OOM和CPU节流

一、前言 使用 Kubernetes 时&#xff0c;内存不足 (OOM) 错误和 CPU 节流是云应用程序中资源处理的主要难题&#xff0c;这是为什么呢&#xff1f;云应用程序中的 CPU 和内存要求变得越来越重要&#xff0c;因为它们与云成本直接相关。通过 limits 和 requests &#xff0c;可…...

数据结构与算法之递归: LeetCode 93. 复原 IP 地址 (Typescript版)

复原 IP 地址 https://leetcode.cn/problems/restore-ip-addresses/ 描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.…...

json模块与jsonpath详解

数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景&#xff0c;比如网站前台与后台之间的数据交互。 JSON和XML的比较可谓不…...

ubuntu20.04在noetic下编译orbslam2

ubuntu20.04在noetic下编译orbslam2 参考链接1&#xff1a;https://blog.csdn.net/qq_58869016/article/details/128660588 参考链接2&#xff1a;https://blog.csdn.net/dong123456789e/article/details/129693837 在noetic下的安装环境 1.库安装 sudo apt-get update sudo …...

64. 最小路径和

最小路径和 描述 : 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 题目 : LeetCode 64.最小路径和 64. 最小路径和 解析 : class So…...

惰性加载函数(js的问题)

在web开发中&#xff0c;因为浏览器之间的实现差异&#xff0c;一些嗅探工作总是不可避免。 var addEvent function( elem, type, handler ){if ( window.addEventListener ){return elem.addEventListener( type, handler, false );}if ( window.attachEvent ){return elem.…...

jmeter,读取CSV文件数据的循环控制

1、构造csv数据 保存文件时需要注意文件的编码格式 id,name,limit,status,address,start_time 100,小米100,1000,1,某某会展中心101,2023/8/20 14:20 101,小米101,1001,1,某某会展中心102,2023/8/21 14:20 2、在线程组下添加【CSV数据文件设置】元件 3、CSV文件数据的循环控…...

移植LVGL到像素屏,从此玩转像素屏0门槛

硬件方面 先上渲染图 实物图 配置 主控&#xff1a;esp32 micro32 plus主频&#xff1a;240MhzFlash&#xff1a;8MPSRAM&#xff1a;2M 软件方面 众所周知&#xff0c;LVGL是一个十分优秀的图形框架&#xff0c;小到几百kb的单片机&#xff0c;大到Linux都可以运行。既然它…...

stateflow 之图函数、simulink函数和matlab函数使用及案例分析

目录 前言 1. 图函数graph function 2.simulink function 3.matlab function 4.调用stateflow中的几种函数方式 前言 对于stateflow实际上可以做simulink和matlab的所有任务&#xff0c;可以有matlab的m语言&#xff0c;也可以有simulink的模块&#xff0c;关于几种函数在…...

C# 加载本地文件设置应用程序图标

static class Program{[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Form mainForm new Form1();mainForm.Show();//IntPtr hProcess Process.GetCurrentProcess().MainWindowHandle;// 设置应用程…...

苹果计划将全球1/4的IPhone产能转移至印度

KlipC报道&#xff1a;据相关人士报道&#xff0c;苹果希望在未来2到3年内每年在印度生产超过5000万部iphone&#xff0c;要是该计划得以实现&#xff0c;印度将占领全球iPhone产量的四分之一。 KlipC的分析师Alex Su表示&#xff1a;“此次iPhone15推出是苹果印度制造计划的一…...

el-date-picker 选择一个或多个日期

el-date-picker可选择多个日期 type“dates” 加个s即可 <div><span>el-date-picker选择多个日期</span><el-date-pickertype"dates"v-model"dateList"placeholder"选择一个或多个日期"></el-date-picker></di…...

5个创建在线帮助文档的好方法!

在线帮助文档是企业为用户提供支持服务的重要工具&#xff0c;它能够帮助用户更好地了解和使用产品&#xff0c;提高用户体验。然而&#xff0c;创建一份优秀的在线帮助文档需要掌握一定的技巧和方法。接下来就介绍一下创建在线帮助文档的5个好方法&#xff0c;帮助企业更好地为…...

听GPT 讲Rust源代码--src/tools(14)

File: rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs这个文件是Rust语言分析器&#xff08;Rust Analyzer&#xff09;的一部分&#xff0c;用于处理和管理条件编译指令&#xff08;Cond…...

arcgis api for js 中使用API的代理页面(跨越配置)

以下仅作为自己阅读官网api的对reques的理解做的备忘笔记。一知半解&#xff0c;仅供参考。 1、获取或者构建第三方代理 官网解释&#xff1a;代理在其自己的 Web 服务器上安装并运行&#xff0c;而不是在 Esri 服务器或安装了 ArcGIS Enterprise 的计算机上安装和运行&#…...

Unity_FairyGUI发布导入Unity编辑器资源报错

Unity_FairyGUI发布导入Unity编辑器资源报错 报错&#xff1a; FairyGUI: settings for Assets/UI/XMUI/XMSubway_atlas0.png is wrong! Correct values are: (Generate Mip Mapsunchecked) UnityEngine.Debug:LogWarning (object) FairyGUI.UIPackage:LoadAtlas (FairyGUI.P…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...