当前位置: 首页 > 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…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...