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

通俗易懂的15个Java Lambda表达式案例

文章目录

    • 1. **实现Runnable接口**:
    • 2. **事件监听器**(如Swing中的ActionListener):
    • 3. **集合遍历**(使用`forEach`方法):
    • 4. **过滤集合**(使用Stream API):
    • 5. **映射集合元素**:
    • 6. **排序集合**:
    • 7. **函数引用作为lambda**:
    • 8. **使用Consumer接口**:
    • 9. **Predicate接口的应用**:
    • 10. **使用Supplier接口**:
    • 11. **使用Function接口**:
    • 12. **并行流处理**:
    • 13. **Optional类的map和filter方法**:
    • 14. **比较器构造**(Comparator.comparing()):
    • 15. **方法引用作为lambda的返回值**:

当然,以下是Java Lambda表达式的10个典型使用案例:

1. 实现Runnable接口

// 在Java 8之前,我们这样写:
new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Hello from a thread");}
}).start();// 使用lambda简化后:
new Thread(() -> System.out.println("Hello from a thread")).start();

2. 事件监听器(如Swing中的ActionListener):

// 传统匿名类方式:
button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("Button clicked");}
});// 使用lambda表达式:
button.addActionListener(e -> System.out.println("Button clicked"));

3. 集合遍历(使用forEach方法):

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 非lambda方式:
for (String name : names) {System.out.println(name);
}// 使用lambda表达式:
names.forEach(name -> System.out.println(name));

4. 过滤集合(使用Stream API):

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());

5. 映射集合元素

List<String> words = Arrays.asList("apple", "banana", "cherry");List<Integer> wordLengths = words.stream().map(String::length).collect(Collectors.toList());

6. 排序集合

List<Person> people = ...; // 假设Person有getName()方法Collections.sort(people, (p1, p2) -> p1.getName().compareTo(p2.getName()));// 或者使用Stream API
List<Person> sortedPeople = people.stream().sorted(Comparator.comparing(Person::getName)).collect(Collectors.toList());

7. 函数引用作为lambda

List<String> list = Arrays.asList("a", "aa", "aaa");
list.sort((s1, s2) -> s1.length() - s2.length()); // 使用lambda进行长度比较排序
list.sort(Comparator.comparing(String::length)); // 使用函数引用简化

8. 使用Consumer接口

BiConsumer<String, String> printer = (x, y) -> System.out.println(x + ", " + y);
printer.accept("Hello", "World");

9. Predicate接口的应用

Predicate<String> isLongEnough = s -> s.length() > 5;
boolean result = isLongEnough.test("longEnoughString");

10. 使用Supplier接口

```java
Supplier<String> randomNameGenerator = () -> "Random Name " + Math.random();
String newName = randomNameGenerator.get();
```

11. 使用Function接口

```java
Function<String, Integer> stringLength = s -> s.length();
int length = stringLength.apply("Hello World");
```

12. 并行流处理

```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream().mapToInt(i -> i * i).sum();
```

13. Optional类的map和filter方法

```java
Optional<String> optional = Optional.of("Hello");
String upperCased = optional.map(s -> s.toUpperCase()).orElse("default");
```

14. 比较器构造(Comparator.comparing()):

```java
List<Student> students = ...; // 假设Student有getScore()方法
Collections.sort(students, Comparator.comparing(Student::getScore).reversed());
```

15. 方法引用作为lambda的返回值

```java
BiFunction<String, String, String> concat = String::concat;
String result = concat.apply("Hello", "World"); // 输出: HelloWorld
```

以上示例进一步展示了Java Lambda在函数式编程、集合操作以及处理Optional对象等场景中的应用。

python学习汇总连接:
50个开发必备的Python经典脚本(1-10)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)
————————————————

​最后我们放松一下眼睛
在这里插入图片描述

相关文章:

通俗易懂的15个Java Lambda表达式案例

文章目录 1. **实现Runnable接口**&#xff1a;2. **事件监听器**&#xff08;如Swing中的ActionListener&#xff09;&#xff1a;3. **集合遍历**&#xff08;使用forEach方法&#xff09;&#xff1a;4. **过滤集合**&#xff08;使用Stream API&#xff09;&#xff1a;5. …...

十七:爬虫-JS逆向(上)

1、什么是JS、JS反爬是什么&#xff1f;JS逆向是什么? JS:JS全称JavaScript是互联网上最流行的脚本语言&#xff0c;这门语言可用于HTML 和 web&#xff0c;更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言。JavaScript 是…...

How to implement anti-crawler strategies to protect site data

How to implement anti-crawler strategies to protect site data 信息校验型反爬虫User-Agent反爬虫Cookie反爬虫签名验证反爬虫WebSocket握手验证反爬虫WebSocket消息校验反爬虫WebSocket Ping反爬虫 动态渲染反爬虫文本混淆反爬虫图片伪装反爬虫CSS偏移反爬虫SVG映射反爬虫字…...

王国维的人生三境界,这一生至少当一次傻瓜

一、人生三境界 古今之成大事业、大学问者&#xff0c;必经过三种之境界。“昨夜西风凋碧树&#xff0c;独上高楼&#xff0c;望尽天涯路。”此第一境也。“衣带渐宽终不悔&#xff0c;为伊消得人憔悴。”此第二境也。“众里寻他千百度&#xff0c;蓦然回首&#xff0c;那人却…...

Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提 之前写过一篇文章&#xff1a;https://qa-lsq.blog.csdn.net/article/details/119782694 只是简单尝试了一下生成一个随机手机号码。 但是如果在工作中一个实际场景要用的二次开发&#xff0c;可能会遇到一些问题。 比如这样一个场景&#xff1a; Mobile或者前端调用部分…...

网络安全B模块(笔记详解)- 数字取证

数据分析数字取证-attack 1.使用Wireshark查看并分析Windows 7桌面下的attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户的IP地址,并将恶意用户的IP地址作为Flag(形式:[IP地址])提交; 解析:http.request.method==POST ​ Flag:[172.16.1.102] 2.继续…...

阿里云服务器8080端口安全组开通图文教程

阿里云服务器8080端口开放在安全组中放行&#xff0c;Tomcat默认使用8080端口&#xff0c;8080端口也用于www代理服务&#xff0c;阿腾云atengyun.com以8080端口为例来详细说下阿里云服务器8080端口开启教程教程&#xff1a; 阿里云服务器8080端口开启教程 阿里云服务器8080端…...

vmlinux, vmlinux.bin, bzImage; cmake的find_package(Clang)新增了哪些变量( 比较两次记录的所有变量差异)

vmlinux, vmlinux.bin, bzImage cd /bal/linux-stable/ file vmlinux #vmlinux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, BuildID[sha1]=b99bbd9dda1ec2751da246d4a7ae4e6fcf7d789b, not stripped #文件大小 20MB, 19940148Bfile ar…...

webpack配置入门

webpack是需要一定配置才能使用的&#xff0c;否则无任何效果。在开始webpack学习之前必须理解以下5个核心概念。 5大核心配置 1.entry(入口) webpack从那个文件开始打包&#xff0c;支持单文件入口&#xff08;vue和react脚手架单入口&#xff09;和多文件入口 2.output(输…...

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图&#xff1f; "图搜图"指的是通过图像搜索的一种方法&#xff0c;用户可以通过上传一张图片&#xff0c;搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字&#xff0c;而是通过比较图片的视…...

LLM之RAG实战(十三)| 利用MongoDB矢量搜索实现RAG高级检索

想象一下&#xff0c;你是一名侦探&#xff0c;身处庞大的信息世界&#xff0c;试图在堆积如山的数据中找到隐藏的一条重要线索&#xff0c;这就是检索增强生成&#xff08;RAG&#xff09;发挥作用的地方&#xff0c;它就像你在人工智能和语言模型世界中的可靠助手。但即使是最…...

UI动效设计师通往高薪之路,AE设计从基础到进阶教学

一、教程描述 UI动效设计&#xff0c;顾名思义即动态效果的设计&#xff0c;用户界面上所有运动的效果&#xff0c;也可以视其为界面设计与动态设计的交集&#xff0c;或者可以简单理解为UI设计中的动画效果&#xff0c;是UI设计中不可或缺的组成部分。现在UI设计的要求越来越…...

APK多渠道加固打包笔记之360加固宝

知识储备 首先需要知道V1,V2,V3签名的区别&#xff0c;可以参考之前的文章&#xff1a;AndroidV1,V2,V3签名原理详解 前言&#xff1a;一般开发者会指定使用自己创建的证书&#xff0c;如果没有指定&#xff0c;则会默认使用系统的证书&#xff0c;该默认的证书存储在C:\Users…...

编程天赋和努力哪个更重要?

编程天赋和努力在编程中都非常重要&#xff0c;但它们的侧重点不同。 编程天赋通常指的是与生俱来的、在逻辑思维、抽象思维、创造力等方面的能力&#xff0c;这些能力可以帮助程序员更快地理解问题、更高效地设计和实现解决方案。天赋的确可以帮助程序员更容易地入门和更快地掌…...

SpringCloud Alibaba之Nacos配置中心配置详解

目录 Nacos配置中心数据模型Nacos配置文件加载Nacos配置 Nacos配置中心数据模型 Nacos 数据模型 Key 由三元组唯一确定&#xff0c;三元组分别是Namespace、Group、DataId&#xff0c;Namespace默认是公共命名空间&#xff08;public&#xff09;&#xff0c;分组默认是 DEFAUL…...

个人实际开发心得感悟及学习方法

前言 我的学习路线应该和大多数人的学习路线差不多,快速的学习完html和css,很多东西都没有记住的情况下就进入了js的学习,js学的懵懵懂懂就进入了node.js的基础学习和webpack的了解式学习,然后就跨度到了vue和react框架的学习。 节奏很快,学习的基础也极其不扎实。正如同那句…...

光速爱购--靠谱的SpringBoot项目

简介 这是一个靠谱的SpringBoot项目实战&#xff0c;名字叫光速爱购。从零开发项目&#xff0c;视频加文档&#xff0c;十天就能学会开发JavaWeb项目。 教程路线是&#xff1a;搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Java代码&g…...

P1019 [NOIP2000 提高组] 单词接龙

网址如下&#xff1a;P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 很怪&#xff0c;不知道该说什么 我试了题目给的第一个测试点的输入&#xff0c;发现输出和测试点的一样&#xff0c;但是还是WA 不是很懂为什么 有没有大佬帮我看一下…...

图解设计模式-中介者模式(Mediator)

中介者模式 定义 使用一个中介者对象&#xff08;mediator&#xff09;集中封装多个具有依赖/关联关系的对象&#xff08;colleague&#xff0c;同事对象&#xff09;之间的交互&#xff0c;使各对象之间不再互相引用&#xff0c;降低对象之间的强耦合程度&#xff0c;对象之…...

小程序面试问答(解决方案)

目录 问&#xff1a;uni-app 组件库的解决方案&#xff1f;&#xff08;xx 分钟&#xff09; 必答​ 加分​ 深入​ 再深入​ 参考链接​ 问&#xff1a;在 uni-app 中&#xff0c;如何进行全局状态管理&#xff1f;请介绍一下你对 Vuex 和 Pinia 的了解。​ 必答​ 加…...

qt第三天快速回顾

控件 listWidget 两种添加方式 1QListWidgetItem 2QStringList(链式编程) TreeWidget 核心代码 1设置头的标签 2.Item创建 添加顶层级别的Item 3.创建子Item 挂载到顶层的Item上 QLabelWidget 表格 增加了一个删除和添加 1.设…...

Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App

Android 编译过程介绍&#xff0c;Android.mk 和 Android.bp 分析&#xff0c; 在源码中编译 AndroidStudio 构建的 App_.mk编译目录所有.bp-CSDN博客...

【C++】几种常用的类型转换

类型转换 c语言中的类型转换C的类型转换static_castreinterpret_castconst_castdynamic_cast c语言中的类型转换 在C语言中我们经常会遇到类型转化的问题&#xff0c;主要分为两种&#xff1a;显式类型转换和隐式类型转换。 显式类型转换&#xff1a;就是程序员使用强制类型转…...

CCNP课程实验-07-OSPF-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错点1&#xff1a;R1-R2之间认证不匹配错误2&#xff1a;hello包的时间配置不匹配错误3&#xff1a;R2的e0/1接口区域配置不正确错误4&#xff1a;R4的e0/1接口没有配置进OSPF错误5&#xff1a;R2的区域1没有配置成特殊区域错误6&#x…...

75.乐理基础-打拍子-八三、八六拍的三角形打法

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;八几拍的V字打法-CSDN博客 在八几拍中几乎只会遇到八三和八六拍&#xff0c;它的V字打法&#xff0c;每个一拍都是一个V字&#xff0c;但是它还有某种程度上更方便的方式去打&#xff0c;按图1 八六拍的三角形&…...

STLink下不了程序的解决办法

目录 1.检查物理接线是否正确 2.检查工程中用的引脚与这两个引脚是否有冲突 3.其次查看HAL_MspInit函数中是否使能SWJ 1.检查物理接线是否正确 2.检查工程中用的引脚与这两个引脚是否有冲突 stm32 swdio和swdclk引脚分别与stm32的PA13&#xff0c;PA14引脚相连 3.其次查看HA…...

操作系统---期末应用综合题

目录 操作系统---期末应用综合题 操作系统---期末应用综合题 1&#xff0e; 若在一分页存储管理系统中&#xff0c;某作业的页表如表1所示。已知页面大小为1024字节&#xff0c;试将逻辑地址1011&#xff0c;5012&#xff08;十进制数&#xff09;转化为相应的物理地址。 表1…...

56K star!一键拥有跨平台 ChatGPT 应用:ChatGPT-Next-Web

前言 现在围绕 openai 的客户端层出不穷&#xff0c;各路开发大神可以说是各出绝招&#xff0c;我也试用过几个国内外的不同客户端。 今天我们推荐的开源项目是目前我用过最好的ChatGPT应用&#xff0c;在GitHub超过56K Star的开源项目&#xff1a;ChatGPT-Next-Web。 ChatGP…...

springMvc向request作用域存储数据的4种方式

文章目录 目录1、springmvc使用ServletAPI向request作用域共享数据&#xff08;原生态&#xff09;2、springmvc使用ModelAndView向request作用域共享数据3、springmvc使用Model向request作用域共享数据4、springmvc使用map向request作用域共享数据5、springmvc使用ModelMap向r…...

SolidUI Gitee GVP

感谢Gitee&#xff0c;我是一个典型“吃软不吃硬”的人。奖励可以促使我进步&#xff0c;而批评往往不会得到我的重视。 我对开源有自己独特的视角&#xff0c;我只参与那些在我看来高于自身认知水平的项目。 这么多年来&#xff0c;我就像走台阶一样&#xff0c;一步一步参与…...

北龙中网 可信网站验证 费用/广告投放平台都有哪些

题目 本题是谭浩强《c语言程序设计》第五章第十六题 题目&#xff1a; 输出图案&#xff1a; * 1 *** 2 ***** 3 ******* 4***** 5*** 6* 7以下是…...

免费建站自助建站网站建设教程网站建设教程/网址提交百度

这里我们再理解了AJAX后&#xff0c;开始来用实例感受AJAX的力量。今天我最后要实现的效果&#xff0c;当鼠标放到图片上时会根据&#xff0c;会把数据库库里的数据读出&#xff0c;通过显示框显示出来。这个在很多网上商店都有用到这里效果&#xff0c;我们这里用AJAX来实现这…...

网站内容优化方法有哪些内容/seowhy

《战略管理》模拟题 单选题 1.IT行业变化快是一个典型的() A.长周期市场 B.标准周期市场 C.短周期市场 D.不能确定 2.当购买商们具有较强的讨价还价能力时从该行业购买的产品应该属于标准化的产品或是(). A.差异产品 B.无差别的产品 C.同质产品 D.类似产品 3.一家钢铁公司并…...

wordpress 延迟加载/互联网销售可以卖什么产品

关于Lua源码的基础型别、内存分配、字符串存储、垃圾回收机制、table原理等部分讲解&#xff0c;我发现有位仁兄写得相当之好&#xff0c;强烈推荐大家先认真阅读下面这篇文章&#xff0c;链接如下&#xff1a; http://simohayha.iteye.com/blog/517748 本文将只对Lua的字节码和…...

安装wordpress提示500错误/网站seo优化徐州百度网络

我一直试图通过RS232串口与我的设备进行通信(在我的情况下是COM6)。我的代码应该向设备写入一串ascii值&#xff0c;然后读取响应&#xff0c;但是我似乎无法得到任何响应。当我将它写入并读取到计算机中的文件时&#xff0c;该程序似乎工作得相当好&#xff0c;但不适用于指定…...

做文献ppt模板下载网站/海外推广渠道都有哪些

今天修改了一下自己以前写的一些代码&#xff0c;属于味道特别坏的那种。这些代码中主要是利用VBA进行Word和Excel识别相关的函数&#xff0c;在修改过程中&#xff0c;逐渐发现了一些问题&#xff0c;越来越觉得脸红。现在总结一下&#xff1a;1&#xff1a;在进行首字下沉的识…...