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

2023-11-11

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

前言

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循环

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • SpringCloud Alibaba 教程

    SpringCloud Alibaba GitHub官方地址 https github com alibaba spring cloud alibaba blob master README zh md SpringCloud Alibab
  • 大学生团体天梯赛(第九届)

    题目地址 天梯赛 include
  • 憨批的语义分割重制版4——TF2 搭建自己的PSPNet语义分割平台

    憨批的语义分割重制版4 TF2 搭建自己的PSPNet语义分割平台 学习前言 什么是PSPNet模型 代码下载 PSPNet实现思路 一 预测部分 1 主干网络介绍 2 加强特征提取结构 3 利用特征获得预测结果 二 训练部分 1 训练文件
  • Vue3 之 readonly

    Vue3 之 readonly readonly 取得一个对象 反应性或普通 或ref并返回一个只读代理 访问的任何嵌套属性也将是只读的 传入普通对象等返回只读代理 传入普通数值或字符串不能变成只读 例如 readonly abc cons
  • 约束下的最优求解:拉格朗日乘数法和KKT条件

    机器学习面对各种各样的求解极值或者最值问题 现在对常见的求解极值或者最值问题思路做一下理论上的梳理 最值问题 简单了解最值问题 求最值是非常常见的问题 比如如何选择交通路线 最快地到达某地 如何用手头的钱买到分量最重的水果等等 我们可以把需
  • 解决An attempt was made to call a method that does not exit问题

    解决An attempt was made to call a method that does not exist The attempt was made from the following location 最近在学习springc
  • KPCA代码

    KPCA算法在TE过程故障诊断的应用 KPCA算法介绍 KPCA代码 数据预处理 计算核矩阵 中心化核矩阵 协方差矩阵的特征值分解 确定主元个数 将特征向量按特征值的大小顺序排序 单位化特征向量 重建测试数据 控制限的设定 故障数据的检测
  • HTML学习-表单语法、表单元素格式、单选框、多选框、按钮 2021-1-19

    表单语法 表单form action 表单提交的位置 可以是网站 也可以是一个请求处理地址 method post get 提交方式 get方式提交 我们可以再url中看到我们提交的信息 不安全 高效 post方式提交 比较安全 传输大文件
  • 利用setTimeout实现倒计时

    倒计时60秒 function countDown that count if count 0 that setData timeCountDownTop 获取验证码 counting false return that setData c
  • stata学习笔记

    受限被解释变量类型 普通断尾随机变量 断尾回归 对于分析的样本解释变量有上限或者下限的要求 零断尾计数数据 零断尾泊松回归和负二项回归 正整数 偶然断尾 自选择问题 样本选择模型 因为某些原因 导致被解释变量的取值有所不同 归并数据 归并T
  • 实例一 LINUX OS 简单制作 JAVA WEB + TOMCAT7.0 RPM 安装包

    1 安装rpmbuild 并配置环境 1 1 首先 你应该检查 rpmbuild 是否已经被安装在你的系统上 你将会利用这个工具从 spec 文件或 SRPM 组件创建 RPM 要检查它是否被安装了 请执行 rpmbuild showrc
  • 单链表、双链表以及环形单链表

    1 单链表 import java util Stack public class SingleLinkedListDemo public static void main String args 测试 HeroNode h1 new He
  • Python:奇数筛选

    今天第一次来csdn 写博客 还是蛮兴奋的 看了小甲鱼的Python视频 想照着他的写写看 功能 从一组数中筛选出奇数 def odd x return x 2 temp range 10 show filter odd temp list
  • 电脑分辨率高,plsql显示太小,怎么设置

    新电脑分辨率比较高 装了plsql developer后 打开发现整个界面的字体菜单非常小 如何设置 效果如下图片 解决方案 右键 gt 属性 gt 兼容性 gt 更改所有用户的设置 gt 更改高DPI设置 gt 高DPI缩放替代 gt 勾
  • unity3D代码控制脚本的停止和启动

    这个问题已经是我第三次在网上查资料了 同样的问题应该重复查询说明使用频率很高 就有理由应该记住 其实这个问题很简单 我认为可行的方法只有一种 就是获取脚本文件 然后把enable属性设置为true或者false就行了 ps 脚本文件可以堪称
  • 文本编辑器Vim常用操作和技巧

    文章目录 1 Vim常用操作 1 1 Vim简介 1 2 Vim工作模式 1 3 插入命令 1 4 定位命令 1 5 删除命令 1 6 复制和剪切命令 1 7 替换和取消命令 1 8 搜索和搜索替换命令 1 9 保存和退出命令 2 Vim使
  • CSMA/CA协议详解【计算机网络】

    读书笔记 2018年9月5日17 13 26 计算机网络 第六版 谢希仁 虽然CSMA CD协议已成功地应用于使用有线连接的局域网 但无线局域网能不能也使用CSMA CD协议呢 显然 这个协议的前一部分CSMA能够使用 在无线局域网中 在发
  • 解混淆/脱壳工具 - De4dot

    De4dot 参数详解 Options File options Deobfuscator options 语法例子 使用 查壳 dnspy 解混淆 运行软件 解混淆后查壳 解混淆后dnspy 参数详解 吾爱破解有比较详细的帖子 下载链接
  • 性能测试连载 (11)- jmeter 的线程数与压力模式

    咨询微信 uhz2008 需求 下面有3个场景 思考一下在jmeter里面如何设计 场景1 有一个项目 500用户同时登录 响应时间能达到多少 场景2 考勤打卡 最大吞吐量能达到多少 每秒最大能完成多少笔打卡业务 场景3 银行业务 如果需要
  • 新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香

    因为一个人就 全体 虽然没提名字但是说的意思和报身份证没区别 我自己看着都尴尬 标题就是事情的经过 和同事的聊天记录在最下面 前言 Lambda表达式是优化代码的工具 使得代码更简洁 易读 符合现代开发的趋势 以及推动函数式编程在Java开
Powered by Hwhale