新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香

news2024/10/7 3:28:48

因为一个人就@全体 虽然没提名字但是说的意思和报身份证没区别, 我自己看着都尴尬…
在这里插入图片描述
标题就是事情的经过,和同事的聊天记录在最下面

前言

Lambda表达式是优化代码的工具,使得代码更简洁、易读,符合现代开发的趋势,以及推动函数式编程在Java开发中的流行。

对于个人开发者来说,是否使用Lambda表达式是可以选择的。但如果作为企业团队的一员,其他成员都在使用Lambda表达式,而你不熟悉它,可能会导致与团队成员的协作困难,并给人一种对新技术不了解、技术能力较差的印象。

简单代码案例和for循环对比

1. for循环

List<String> strings = Arrays.asList("Hello", "World", "Lambda", "Expression");

for (String s : strings) {
    System.out.println(s.length());
}

Lambda表达式的代码

List<String> strings = Arrays.asList("Hello", "World", "Lambda", "Expression");

strings.forEach(s -> System.out.println(s.length()));

这里简单介绍几个函数,
forEach:forEach方法用于迭代列表中的每个元素,并对其进行指定的操作。可以使用Lambda表达式传递要执行的操作。常用于遍历列表并对每个元素执行某个操作,如打印、修改等。

List<String> fruits = Arrays.asList("Apple", "Banana", "Orange");

fruits.forEach(fruit -> System.out.println(fruit)); // 打印每个水果名称

stream:stream方法用于将列表转换为一个流,以便进行各种操作,如过滤、转换、排序、聚合等。通过使用流,可以对列表中的元素进行链式操作,提供了更多的灵活性和功能。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> filteredNumbers = numbers.stream()
                                       .filter(n -> n % 2 == 0)
                                       .collect(Collectors.toList()); // 过滤出偶数

int sum = numbers.stream()
                 .reduce(0, Integer::sum); // 求和

filter:filter方法用于根据指定条件筛选出列表中符合条件的元素,返回一个新的流。该方法接受一个Predicate函数式接口作为参数,用于定义筛选条件。常用于根据某个条件过滤出符合条件的元素。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> filteredNumbers = numbers.stream()
                                       .filter(n -> n % 2 == 0)
                                       .collect(Collectors.toList()); // 过滤出偶数

collect(Collectors.toList()):collect方法用于将流中的元素收集到一个新的列表中。Collectors.toList()是一个静态方法,用于将流中的元素收集到一个新的List对象中。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> collectedList = numbers.stream()
                                     .filter(n -> n % 2 == 0)
                                     .collect(Collectors.toList()); // 过滤出偶数并收集到新的列表中

总结
forEach用于遍历列表并对每个元素执行操作,stream将列表转换为流以进行更复杂的操作,filter根据条件筛选出符合条件的元素,而**collect(Collectors.toList())**用于将流中的元素收集到新的列表中

Lambda表达式和传统的for循环,一些常见的对比

和for循环对列表进行处理:

遍历列表并打印每个元素:

List<String> fruits = Arrays.asList("Apple", "Banana", "Orange");

// 使用Lambda表达式
fruits.forEach(fruit -> System.out.println(fruit));

// 使用for循环
for (String fruit : fruits) {
    System.out.println(fruit);
}

对列表中的元素进行求和:


List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

// 使用Lambda表达式
int sum1 = numbers.stream()
                  .reduce(0, Integer::sum);
System.out.println(sum1);

// 使用for循环
int sum2 = 0;
for (int number : numbers) {
    sum2 += number;
}
System.out.println(sum2);

过滤列表中的元素并生成新的列表:

java
Copy code
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

// 使用Lambda表达式
List<Integer> filteredNumbers1 = numbers.stream()
                                        .filter(n -> n % 2 == 0)
                                        .collect(Collectors.toList());
System.out.println(filteredNumbers1);

// 使用for循环
List<Integer> filteredNumbers2 = new ArrayList<>();
for (int number : numbers) {
    if (number % 2 == 0) {
        filteredNumbers2.add(number);
    }
}
System.out.println(filteredNumbers2);

以上是使用Lambda表达式和for循环对列表进行处理的几个常见案例。仔细看很容易看懂,遇到企业情况如果要求严格尽量少用for循环

在这里述
飞书有水印我涂掉了剩下全部匿名
经典最菜的笑的最开心🤡🤡🤡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web3创业有哪些机会?(一)

目录 1. 去中心化金融&#xff08;DeFi&#xff09;&#xff1a;2. 去中心化身份验证和数字身份&#xff1a;3. 去中心化市场和电子商务&#xff1a;4. 区块链游戏和虚拟资产&#xff1a;5. 数据隐私和安全&#xff1a;6. 去中心化社交媒体&#xff1a;7. 去中心化能源交易&…

Webpack原理与实战 --- 背景介绍

模块化的演进过程 Stage 1 - 文件划分方式 缺点&#xff1a; 模块直接在全局工作&#xff0c;大量模块成员污染全局作用域&#xff1b;没有私有空间&#xff0c;所有模块内的成员都可以在模块外部被访问或者修改&#xff1b;一旦模块增多&#xff0c;容易产生命名冲突&#…

自动化测试及典型开源的自动化测试工具

目录 前言&#xff1a; 自动化测试 自动化测试的意义 手工测试的局限性 自动化测试带来的好处 自动化测试的前提条件 自动化测试的方法 自动化测试的不足 自动化测试的应用方向 典型开源的自动化测试工具 前言&#xff1a; 自动化测试是一种使用软件工具和脚本来执行…

第二章——开始学习C++

进入C 首先介绍一个显示消息的简单C程序&#xff08;不同于以往的“Hello&#xff0c;world"&#xff09; #include<iostream> int main() {using namespace std;cout << "Come up and C me some time.";cout << endl;cout << "…

手机上无处不在的AI,原来还藏有这么多秘密

目录 一、AI在拍照中的应用 二、AI在日常生活中的应用 三、手机上AI的来自哪&#xff1f; 尽管2023年才过完了一半&#xff0c;但来自AI领域的科技震撼却没有要结束的意思。回顾过往&#xff0c;AI从没像今天这般那样受人瞩目&#xff0c;似乎一夜之间&#xff0c;它就成了新…

速览6月更新|EasyV产研团队带来产品功能优化

EasyV产研团队在6月份为您带来了一系列令人期待的产品功能优化&#xff0c;让数字化管理更加轻松高效&#xff01;话不多说&#xff0c;快来看看都有哪些新变化吧&#xff5e; 速览6月更新内容&#xff1a; 01 平台升级&#xff5c;工作台功能优化 02 模板上新&#xff5c;能…

LeetCode打卡 day58--单调栈

一个人的朝圣 — LeetCode打卡第58天 知识总结 Leetcode 739. 每日温度题目说明代码说明 Leetcode 496. 下一个更大元素 I题目说明代码说明 知识总结 单调栈的应用, 就是需要构建一个单调递增或者单调递减的栈, 去解决下一个大(小)的元素的问题 Leetcode 739. 每日温度 题目链…

网络安全面试题(含答案)

防范常见的 Web 攻击 什么是SQL注入攻击 攻击者在HTTP请求中注入恶意的SQL代码&#xff0c;服务器使用参数构建数据库SQL命令时&#xff0c;恶意SQL被一起构造&#xff0c;并在数据库中执行。 用户登录&#xff0c;输入用户名 lianggzone&#xff0c;密码 ‘ or ‘1’’1 &a…

JavaScript 之【事件循环】机制的深入浅出解读

前言&#xff1a; JavaScript 作为一种单线程的开发语言&#xff0c;在执行的时候会有特定的风格&#xff0c;本章节以 JS 单线程的特点为引入&#xff0c;详细分析讲解了 JS 的事件循环机制 目录 什么是【进程】什么是【线程】浏览器拥有哪些进程和线程【渲染主线程】的工作模…

冒泡排序(思路+代码)

冒泡排序&#xff1a; 变量&#xff1a; flag 如果没有交换过就终止循环就是flase&#xff0c;终止外层循环 第二层循环&#xff1a;n个数比较n-1次 第一层循环&#xff1a; 第一趟&#xff0c;比较n-1次 第二趟&#xff0c;比较n-2次 ... ... 代码&#xff1a; import…

展望“智”造未来|深眸科技以AI+机器视觉,夯基产业新发展格局

近日&#xff0c;2023昆山元宇宙国际装备展在昆山国际会展中心落下帷幕。展会期间&#xff0c;各大展商携新技术、新产品、新概念纷纷亮相&#xff0c;为现场参展观众和嘉宾呈现如梦似幻的元宇宙盛会。 此次展会&#xff0c;深眸科技认识了诸多工业元宇宙领域的优质产品及企业…

Spring Boot3入门快速体验-Developing Your First Spring Boot Application

一、进入Getting Started https://spring.io/ 点击Spring Boot点击LEARN,再点击Reference Doc.&#xff1a; 再点击Getting Started Introducing Spring Boot, System Requirements, Servlet Containers, Installing Spring Boot, and Developing Your First Spring Boot App…

前端Vue组件之仿京东拼多多领取优惠券弹出框popup 可用于电商商品详情领券场景使用

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。通过组件化开发&#xff0c;可以有效实现单…

痞子衡嵌入式:从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制。 我们知道配合 MCU 一起工作的存储器包含 ROM(Flash) 和 RAM 两类&#xff0c;前者主要放 RO 代码和数据&#xff0c;后者放 RW …

文件系统考古4:如何支持多个文件系统

Steve Kleiman 在 1986 年撰写了《Vnodes: An Architecture for Multiple File System Types in Sun UNIX》一文。这篇论文幅较短&#xff0c;大部分内容是数据结构的列举&#xff0c;以及 C 语言结构之间相互指向的图表。 Steve Kleiman是分布式文件系统领域的专家&#xff0c…

selenium 浏览器托管

selenium 浏览器托管&#xff0c;是启动一个浏览器&#xff0c;调试代码&#xff0c;可以运行当前调试代码&#xff0c;不用从启动浏览器开始从头执行 在谷歌浏览器chrome.exe 目录中打开cmd 输入下面目录&#xff0c;启动器浏览器 chrome.exe --remote-debugging-port9222 -…

cesium 控件 风格 白色 亮色 模式 组件变白

在要白色风格的控件的任意父级的class加上cesium-lighter即可, 如图黄色圈出来的

redis实现伪集群

主从复制配置 主从复制时只需要配置从库即可,其默认为主库模式. 打开 redis 客户端登录,使用命令 info replication 查看. 主从复制可以搭建真集群,也可以搭建伪集群 真集群就是有多台主机,每台主机 安装一个 redis.伪集群就是在一台主机上复制多份配置,修改其端口,运行多个…

ja3指纹

问题&#xff1a; 请求失效&#xff0c;带上抓包软件却可以->检测ja3浏览器指纹 方法&#xff0c;python 安装curl_cffi库 pip install curl_cffi 查看浏览器指纹 https://tls.browserleaks.com/json python 原生request 缺少两个指纹 使用curl_cffi之后 可以看到结果…