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

简单案例比较Lambda和方法引用的差别

1.打印列表元素

正常使用
 List<String> list = Arrays.asList("a", "b", "c");for (String str: list){System.out.println(str);}
Lambda表达式
 list.forEach(e -> System.out.println(e));
方法引用
list.forEach(System.out::println);

2.打印字符串长度

正常使用
 List<String> list = Arrays.asList("aa", "b", "ccc");ArrayList<Integer> lengths = new ArrayList<>();for (String s : list){lengths.add(s.length());}
Lambda表达式
  List<Integer> collect = list.stream().map(s -> s.length()).collect(Collectors.toList());
方法引用
List<Integer> collect = list.stream().map(String::length).collect(Collectors.toList());

3.字符串转大写

正常使用
 List<String> list = Arrays.asList("a", "b", "c");List<String> upperCaseList = new ArrayList<>();for (String s : list) {upperCaseList.add(s.toUpperCase());}
Lambda表达式
  List<String> upperCaseList = list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
方法引用
  List<String> upperCaseList = list.stream().map(String::toUpperCase).collect(Collectors.toList()); 

4.对象排序

正常使用

person对象

class Person{private String name;public Person(String name) {this.name = name;}public String getName() {return this.name;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +'}';}
}
List<Person> people = new ArrayList<>();people.add(new Person("aaa"));people.add(new Person("ddd"));people.add(new Person("ccc"));people.add(new Person("bbb"));Collections.sort(people, new Comparator<Person>() {@Overridepublic int compare(Person p1, Person p2) {return p1.getName().compareTo(p2.getName());}});
Lambda表达式
   people.sort((p1, p2) -> p1.getName().compareTo(p2.getName()));
方法引用
   people.sort(Comparator.comparing(Person::getName));

5.过滤列表中的偶数

正常使用
List<Integer> numbers = Arrays.asList(1, 2, 3,3,2,1,7,8,9,6);List<Integer> evenNumbers = new ArrayList<>();for (Integer number : numbers) {if (number % 2 == 0) {evenNumbers.add(number);}}
Lambda表达式
List<Integer> evenNumbersLambda = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
方法引用

方法

class IntegerPredicates {// 修改 isEven 方法以接受 Integer 参数并返回 booleanpublic static boolean isEven(Integer n) {return n % 2 == 0;}
}
List<Integer> evenNumbersMethodRef = numbers.stream().filter(IntegerPredicates::isEven) // 正确的方法引用.collect(Collectors.toList());

6.将字符串列表转换为整数列表

正常使用
 List<String> list = Arrays.asList("1", "2", "3");ArrayList<Object> integers = new ArrayList<>();for (String s:list){integers.add(Integer.valueOf(s));}
Lambda表达式
List<Integer> integersLambda = list.stream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
方法引用
 List<Integer> integersMethodRef = list.stream().map(Integer::valueOf).collect(Collectors.toList());

7.创建数组列表

正常使用
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));for (int i = 0; i < list.size(); i++) {list.set(i, list.get(i) + list.get(i));}
Lambda表达式
List<String> listLambda = Arrays.asList("a", "b", "c").stream().map(s -> s + s).collect(Collectors.toList());
方法引用

方法

class StringConcatenator {// 定义一个实例方法,用于将字符串加倍public static String duplicate(String s) {return s + s;}
}
List<String> listMethodRef = Arrays.asList("a", "b", "c").stream().map(StringConcatenator::duplicate).collect(Collectors.toList());

8.比较两个对象是否相等

正常使用
        // 创建两个字符串对象String str1 = "hello";String str2 = "hello";System.out.println(str2.equals(str1));
Lambda表达式
BiPredicate<String, String> isEqualLambda = (s1, s2) -> Objects.equals(s1, s2);
方法引用
BiPredicate<String, String> isEqualMethodRef = Objects::equals;

转载自开思通智网:https://www.opensnn.com/os/article/10000903

相关文章:

简单案例比较Lambda和方法引用的差别

1.打印列表元素 正常使用 List<String> list Arrays.asList("a", "b", "c");for (String str: list){System.out.println(str);}Lambda表达式 list.forEach(e -> System.out.println(e));方法引用 list.forEach(System.out::println…...

10 个最佳 AI 代码生成器

人工智能的兴起极大地影响了编码和开发领域。 人工智能驱动的代码生成器有助于简化编码流程、自动化日常任务&#xff0c;甚至预测和建议代码片段。 下面&#xff0c;我们介绍一些最好的人工智能代码生成器、它们的独特功能&#xff0c;以及它们如何彻底改变您的编程体验。 1.…...

Eureka服务发现机制解析:服务实例的唯一标识

引言 Eureka是Netflix开源的服务发现框架&#xff0c;它是Spring Cloud体系中的核心组件之一。在微服务架构中&#xff0c;服务实例的动态注册与发现是实现服务间解耦和通信的关键。Eureka通过提供服务注册中心&#xff0c;使得各微服务实例能够注册自己并发现其他服务实例。本…...

操作系统实训复习笔记(基于命名管道与信号的进程间通信)

目录 基于命名管道与信号的进程间通信 第1关&#xff1a;命名管道与信号IPC操作考查 基于命名管道与信号的进程间通信 第1关&#xff1a;命名管道与信号IPC操作考查 &#xff08;没啥好说的&#xff0c;不会的操作系统考试就靠记呗&#xff01;&#xff01;&#xff09; slee…...

数字化转型第三步:数字化业务创新与发展,提升收入和利润

引言&#xff1a;之前笔者的文章发布了企业数字化转型业务部分&#xff0c;如【开源节流】如何通过数字化转型增强盈利能力&#xff1f;企业供应链数字化转型如何做&#xff1f;让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…...

SSM爱心捐赠物资维护系统-计算机毕业设计源码09536

摘要 随着信息技术的快速发展&#xff0c;计算机应用已经进入成千上万的家庭。随着物资数量的增加&#xff0c;物资库存管理也存在许多问题。物资数据的处理量正在迅速增加&#xff0c;原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析&#xff0c;减…...

​中国9大流域地图SHP数据

九大流域片区是指中国境内九个主要流域片区。 分别包括东南诸河区、内陆河区、松辽河流区、海河流域区、淮河流域区、珠江流域片、西南诸河片、长江流域片和黄河流域片等。 如果这九大流域数据对你有用&#xff0c;请在文末查看该数据的领取方法。 中国9大流域图 流域&…...

android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案

出现需要常量表达式 R.id.xxx 表达式错误的处理方法 出现的原因是因为: 使用 Android Gradle 插件 8.0.0 时&#xff0c;默认情况下&#xff0c;您的所有 R 类资源都不再声明为 final/constant&#xff08;因此在 switch 语句中不起作用&#xff09;。 如果您在 Android Studi…...

vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法)

本篇介绍一下使用 vue3-openlayers marker 光晕扩散&#xff08;光环扩散&#xff09;&#xff08;postrender 事件和 render 方法&#xff09; 1 需求 marker 光晕扩散&#xff08;光环扩散&#xff09; 2 分析 marker 光晕扩散&#xff08;光环扩散&#xff09;使用 post…...

新型防勒索病毒方案分享无需依靠病毒库

MCK具备可信系统&#xff0c;数据库保护&#xff0c;场景白名单&#xff0c;文件保护四大功能。如何运用在防勒索病毒中 在防勒索病毒的问题上&#xff0c;MCK主机的加固功能显得尤为重要。MCK的四大功能——可信系统、数据库保护、场景白名单以及文件保护&#xff0c;为我们在…...

《Mybatis-Plus》系列文章目录

什么是 MyBatis-Plus&#xff1f; Mybatis-Plus是一个在MyBatis基础上进行增强和扩展的开源Java持久层框架。 Mybatis-Plus&#xff08;简称MP&#xff09;旨在简化开发、提高效率&#xff0c;通过提供一系列便捷的功能和工具&#xff0c;大幅度减少开发人员编写重复代码的时…...

在Matplotlib中,`xlim()` 函数用于设置x轴的显示范围,原因和作用如下:

在Matplotlib中&#xff0c;xlim() 函数用于设置x轴的显示范围&#xff0c;原因和作用如下&#xff1a; 1. **控制显示范围**&#xff1a; xlim() 允许用户指定x轴的最小值和最大值&#xff0c;从而控制图表显示的数据范围。 2. **改善可视化**&#xff1a; 通过设置x轴的范围…...

win7使用vue-cli创建vue3工程

1.创建名为test的项目 vue create test 回车以后选择第三个,进行手动选择 2.选择配置 向下箭头表示下一个&#xff0c;空格表示*选中&#xff0c;按照我的选择来选即可&#xff0c;选完后回车 3.选择vue.js版本 上线箭头进行选择&#xff0c;选择后回车 4.选择不同的配置&#…...

为何云原生是未来?企业IT架构的颠覆与重构

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是云原生 2、云原生的背景和起源 背景 起源 关…...

构建家庭NAS之三:在TrueNAS SCALE上安装qBittorrent

本系列文章索引&#xff1a; 构建家庭NAS之一&#xff1a;用途和软硬件选型 构建家庭NAS之二&#xff1a;TrueNAS Scale规划、安装与配置 构建家庭NAS之三&#xff1a;在TrueNAS SCALE上安装qBittorrent 大部分家庭NAS用户应该都会装一个下载工具。本篇以qBittorrent为例&…...

Matplotlib中文显示解决方案:字体渲染机制与font.sans-serif设置

在Matplotlib中&#xff0c;设置font.sans-serif参数为中文字体如SimHei&#xff0c;可以使图表支持中文显示的原因在于Matplotlib的字体渲染机制。以下是详细解释&#xff1a; 1. **字体支持**&#xff1a; Matplotlib默认使用的字体可能不支持中文字符。大多数西方字体只包含…...

docker +tmux 远程本地gdb调试

文章目录 远程调试docker pull失败docker上容器运行程序失败宿主机远程调试docker中运行的程序环境准备调试步骤 本地调试bugpwngdbtmuxTmux复制粘贴到其他地方pwngdb和tmux优化~~感觉用了大佬的镜像后宿主机来做pwn题都不香了~~ 远程调试 但目前不知道如何实现可以边跟着脚本…...

计算机视觉全系列实战教程 (十三):图像形态学操作

1.基本概述 (1)What 图像的形态学操作的本质&#xff1a;集合间的运算 几何学 (2)Why(有什么用途&#xff09; 消除噪声、边缘提取、区域填充、细化和粗化、分割独立的图像元素、求图像梯度、求极大值区域或极小值区域等。 (3)Which(有哪些常见的形态学操作) A.膨胀 使得…...

python的 pyside2 安装

pip install pyside2 pip install pyqt5-tools pycharm 在pychar 的Main Menu--setings--tool--External-tools 点击 新增自定义工具 1&#xff09;自定义 QtDesigner 目的&#xff1a;用于生成.ui文件Name &#xff1a;QtDesigner Group &#xff1a;Qt Program &a…...

R语言——数据与运算

练习基本运算&#xff1a; v <- c(2,4,6,9)t <- c(1,4,7,9)print(v>t)print(v < t)print(v t)print(v!t)print(v>t)print(v<t) v <- c(3,1,TRUE,23i)t <- c(4,1,FALSE,23i)print(v&t)print(v|t)print(!v)v <- c(3,0,TRUE,22i)t <- c(1,3,T…...

别再把FastAPI路由和挂载搞混了!一张图讲清`mount`与子应用的应用场景

FastAPI路由与挂载深度解析&#xff1a;如何为模块化开发选择最佳方案 在构建现代Web应用时&#xff0c;模块化设计已成为提升可维护性和团队协作效率的关键策略。FastAPI作为Python生态中最受欢迎的异步框架之一&#xff0c;提供了两种截然不同的模块化方案&#xff1a;APIRo…...

mybatis实战进阶:基于快马生成缓存、分页与批量处理等生产级配置

mybatis实战进阶&#xff1a;基于快马生成缓存、分页与批量处理等生产级配置 最近在做一个用户管理系统时&#xff0c;遇到了不少mybatis的性能问题。单表查询还好&#xff0c;一旦涉及关联查询和批量操作&#xff0c;性能瓶颈就特别明显。经过一番摸索&#xff0c;总结出几个…...

终极指南:如何用Python脚本5分钟获取百度网盘真实下载链接

终极指南&#xff1a;如何用Python脚本5分钟获取百度网盘真实下载链接 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经为百度网盘的下载速度而烦恼&#xff1f;每次…...

PP-DocLayoutV3产业应用效果:金融票据与医疗报告的结构化

PP-DocLayoutV3产业应用效果&#xff1a;金融票据与医疗报告的结构化 每次看到财务同事抱着一沓厚厚的银行流水单手动录入数据&#xff0c;或者医生在成堆的化验单里翻找关键指标&#xff0c;我就在想&#xff0c;这事儿能不能让机器来干&#xff1f;过去&#xff0c;文档智能…...

仅限产线工程师获取:Python网关调试禁忌清单(含12个厂商文档刻意回避的硬件层坑点,第7条致90%项目延期)

第一章&#xff1a;Python网关调试的产线准入机制与权限边界在工业级Python网关部署场景中&#xff0c;产线准入并非简单验证服务可达性&#xff0c;而是融合身份认证、环境隔离、行为审计与动态策略执行的多维控制体系。所有调试接入请求必须通过统一API网关前置鉴权模块&…...

手把手教你用Python实现ECC椭圆曲线加密(附完整代码示例)

手把手教你用Python实现ECC椭圆曲线加密&#xff08;附完整代码示例&#xff09; 1. 为什么选择ECC加密&#xff1f; 在现代密码学领域&#xff0c;椭圆曲线加密&#xff08;ECC&#xff09;正逐渐成为RSA的有力竞争者。相比传统RSA算法&#xff0c;ECC在相同安全级别下密钥长…...

终极指南:使用OpenCore Legacy Patcher让旧Mac焕发新生,完整支持最新macOS

终极指南&#xff1a;使用OpenCore Legacy Patcher让旧Mac焕发新生&#xff0c;完整支持最新macOS 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台性能依然强…...

浦语灵笔2.5-7B应用落地:教育场景中数学题截图自动解题流程

浦语灵笔2.5-7B应用落地&#xff1a;教育场景中数学题截图自动解题流程 1. 项目背景与价值 作为一名长期从事AI教育应用开发的技术人&#xff0c;我深知数学学习中的痛点&#xff1a;学生遇到难题时&#xff0c;往往需要等待老师或同学的帮助&#xff0c;这个过程可能打断学习…...

CVE_2020_26259 任意文件删除

为什么要用c语言搓个shellcode出来&#xff0c;为什么不用msfvenom&#xff1f;因为这玩意生成的shellcode是基于winsocket的&#xff0c;注进去还要启动个监听&#xff0c;我仅仅想要验证一下可行性而已&#xff0c;不如自己搓个弹出messagebox版本的shellcode 环境 windows 1…...

零基础入门QWEN-AUDIO:3步完成语音合成,开箱即用

零基础入门QWEN-AUDIO&#xff1a;3步完成语音合成&#xff0c;开箱即用 1. 为什么选择QWEN-AUDIO语音合成 语音合成技术正在改变我们与数字世界互动的方式。想象一下&#xff0c;你只需要输入文字&#xff0c;就能获得听起来和真人几乎无异的语音输出——这就是QWEN-AUDIO带…...