简单案例比较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 代码生成器
人工智能的兴起极大地影响了编码和开发领域。 人工智能驱动的代码生成器有助于简化编码流程、自动化日常任务,甚至预测和建议代码片段。 下面,我们介绍一些最好的人工智能代码生成器、它们的独特功能,以及它们如何彻底改变您的编程体验。 1.…...
Eureka服务发现机制解析:服务实例的唯一标识
引言 Eureka是Netflix开源的服务发现框架,它是Spring Cloud体系中的核心组件之一。在微服务架构中,服务实例的动态注册与发现是实现服务间解耦和通信的关键。Eureka通过提供服务注册中心,使得各微服务实例能够注册自己并发现其他服务实例。本…...
操作系统实训复习笔记(基于命名管道与信号的进程间通信)
目录 基于命名管道与信号的进程间通信 第1关:命名管道与信号IPC操作考查 基于命名管道与信号的进程间通信 第1关:命名管道与信号IPC操作考查 (没啥好说的,不会的操作系统考试就靠记呗!!) slee…...
数字化转型第三步:数字化业务创新与发展,提升收入和利润
引言:之前笔者的文章发布了企业数字化转型业务部分,如【开源节流】如何通过数字化转型增强盈利能力?企业供应链数字化转型如何做?让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…...
SSM爱心捐赠物资维护系统-计算机毕业设计源码09536
摘要 随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减…...
中国9大流域地图SHP数据
九大流域片区是指中国境内九个主要流域片区。 分别包括东南诸河区、内陆河区、松辽河流区、海河流域区、淮河流域区、珠江流域片、西南诸河片、长江流域片和黄河流域片等。 如果这九大流域数据对你有用,请在文末查看该数据的领取方法。 中国9大流域图 流域&…...
android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案
出现需要常量表达式 R.id.xxx 表达式错误的处理方法 出现的原因是因为: 使用 Android Gradle 插件 8.0.0 时,默认情况下,您的所有 R 类资源都不再声明为 final/constant(因此在 switch 语句中不起作用)。 如果您在 Android Studi…...
vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法)
本篇介绍一下使用 vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法) 1 需求 marker 光晕扩散(光环扩散) 2 分析 marker 光晕扩散(光环扩散)使用 post…...
新型防勒索病毒方案分享无需依靠病毒库
MCK具备可信系统,数据库保护,场景白名单,文件保护四大功能。如何运用在防勒索病毒中 在防勒索病毒的问题上,MCK主机的加固功能显得尤为重要。MCK的四大功能——可信系统、数据库保护、场景白名单以及文件保护,为我们在…...
《Mybatis-Plus》系列文章目录
什么是 MyBatis-Plus? Mybatis-Plus是一个在MyBatis基础上进行增强和扩展的开源Java持久层框架。 Mybatis-Plus(简称MP)旨在简化开发、提高效率,通过提供一系列便捷的功能和工具,大幅度减少开发人员编写重复代码的时…...
在Matplotlib中,`xlim()` 函数用于设置x轴的显示范围,原因和作用如下:
在Matplotlib中,xlim() 函数用于设置x轴的显示范围,原因和作用如下: 1. **控制显示范围**: xlim() 允许用户指定x轴的最小值和最大值,从而控制图表显示的数据范围。 2. **改善可视化**: 通过设置x轴的范围…...
win7使用vue-cli创建vue3工程
1.创建名为test的项目 vue create test 回车以后选择第三个,进行手动选择 2.选择配置 向下箭头表示下一个,空格表示*选中,按照我的选择来选即可,选完后回车 3.选择vue.js版本 上线箭头进行选择,选择后回车 4.选择不同的配置&#…...
为何云原生是未来?企业IT架构的颠覆与重构
🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是云原生 2、云原生的背景和起源 背景 起源 关…...
构建家庭NAS之三:在TrueNAS SCALE上安装qBittorrent
本系列文章索引: 构建家庭NAS之一:用途和软硬件选型 构建家庭NAS之二:TrueNAS Scale规划、安装与配置 构建家庭NAS之三:在TrueNAS SCALE上安装qBittorrent 大部分家庭NAS用户应该都会装一个下载工具。本篇以qBittorrent为例&…...
Matplotlib中文显示解决方案:字体渲染机制与font.sans-serif设置
在Matplotlib中,设置font.sans-serif参数为中文字体如SimHei,可以使图表支持中文显示的原因在于Matplotlib的字体渲染机制。以下是详细解释: 1. **字体支持**: Matplotlib默认使用的字体可能不支持中文字符。大多数西方字体只包含…...
docker +tmux 远程本地gdb调试
文章目录 远程调试docker pull失败docker上容器运行程序失败宿主机远程调试docker中运行的程序环境准备调试步骤 本地调试bugpwngdbtmuxTmux复制粘贴到其他地方pwngdb和tmux优化~~感觉用了大佬的镜像后宿主机来做pwn题都不香了~~ 远程调试 但目前不知道如何实现可以边跟着脚本…...
计算机视觉全系列实战教程 (十三):图像形态学操作
1.基本概述 (1)What 图像的形态学操作的本质:集合间的运算 几何学 (2)Why(有什么用途) 消除噪声、边缘提取、区域填充、细化和粗化、分割独立的图像元素、求图像梯度、求极大值区域或极小值区域等。 (3)Which(有哪些常见的形态学操作) A.膨胀 使得…...
python的 pyside2 安装
pip install pyside2 pip install pyqt5-tools pycharm 在pychar 的Main Menu--setings--tool--External-tools 点击 新增自定义工具 1)自定义 QtDesigner 目的:用于生成.ui文件Name :QtDesigner Group :Qt Program &a…...
R语言——数据与运算
练习基本运算: 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路由与挂载深度解析:如何为模块化开发选择最佳方案 在构建现代Web应用时,模块化设计已成为提升可维护性和团队协作效率的关键策略。FastAPI作为Python生态中最受欢迎的异步框架之一,提供了两种截然不同的模块化方案:APIRo…...
mybatis实战进阶:基于快马生成缓存、分页与批量处理等生产级配置
mybatis实战进阶:基于快马生成缓存、分页与批量处理等生产级配置 最近在做一个用户管理系统时,遇到了不少mybatis的性能问题。单表查询还好,一旦涉及关联查询和批量操作,性能瓶颈就特别明显。经过一番摸索,总结出几个…...
终极指南:如何用Python脚本5分钟获取百度网盘真实下载链接
终极指南:如何用Python脚本5分钟获取百度网盘真实下载链接 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经为百度网盘的下载速度而烦恼?每次…...
PP-DocLayoutV3产业应用效果:金融票据与医疗报告的结构化
PP-DocLayoutV3产业应用效果:金融票据与医疗报告的结构化 每次看到财务同事抱着一沓厚厚的银行流水单手动录入数据,或者医生在成堆的化验单里翻找关键指标,我就在想,这事儿能不能让机器来干?过去,文档智能…...
仅限产线工程师获取:Python网关调试禁忌清单(含12个厂商文档刻意回避的硬件层坑点,第7条致90%项目延期)
第一章:Python网关调试的产线准入机制与权限边界在工业级Python网关部署场景中,产线准入并非简单验证服务可达性,而是融合身份认证、环境隔离、行为审计与动态策略执行的多维控制体系。所有调试接入请求必须通过统一API网关前置鉴权模块&…...
手把手教你用Python实现ECC椭圆曲线加密(附完整代码示例)
手把手教你用Python实现ECC椭圆曲线加密(附完整代码示例) 1. 为什么选择ECC加密? 在现代密码学领域,椭圆曲线加密(ECC)正逐渐成为RSA的有力竞争者。相比传统RSA算法,ECC在相同安全级别下密钥长…...
终极指南:使用OpenCore Legacy Patcher让旧Mac焕发新生,完整支持最新macOS
终极指南:使用OpenCore Legacy Patcher让旧Mac焕发新生,完整支持最新macOS 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台性能依然强…...
浦语灵笔2.5-7B应用落地:教育场景中数学题截图自动解题流程
浦语灵笔2.5-7B应用落地:教育场景中数学题截图自动解题流程 1. 项目背景与价值 作为一名长期从事AI教育应用开发的技术人,我深知数学学习中的痛点:学生遇到难题时,往往需要等待老师或同学的帮助,这个过程可能打断学习…...
CVE_2020_26259 任意文件删除
为什么要用c语言搓个shellcode出来,为什么不用msfvenom?因为这玩意生成的shellcode是基于winsocket的,注进去还要启动个监听,我仅仅想要验证一下可行性而已,不如自己搓个弹出messagebox版本的shellcode 环境 windows 1…...
零基础入门QWEN-AUDIO:3步完成语音合成,开箱即用
零基础入门QWEN-AUDIO:3步完成语音合成,开箱即用 1. 为什么选择QWEN-AUDIO语音合成 语音合成技术正在改变我们与数字世界互动的方式。想象一下,你只需要输入文字,就能获得听起来和真人几乎无异的语音输出——这就是QWEN-AUDIO带…...
