☀️提高生产力:这10个Lambda表达式必须掌握!!!

☀️提高生产力:这10个Lambda表达式必须掌握!!!

server/2024/5/13 19:04:54/ 标签: java, lambda

1.使用Lambda表达式进行集合遍历

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
for (String fruit : list) {System.out.println(fruit);
}

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
list.forEach(fruit->System.out.println(fruit));

2.使用Lambda表达式进行排序

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
Collections.sort(list,new Comparator(){public int compare(String s1,String s2){return s1.copmpare(s2);}
})

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
Collections.sort(list,(s1,s2)->s1.compare(s2);

3.使用Lambda 表达式进行过滤

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
List filteredList=new ArrayList();
for(String fruit : list){if(fruit.startsWith("a")){filteredList.add(fruit);}
}

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
List filteredList=list.stream().filter(fruit->fruit.startsWith("a)).collect(Collectors.toList());

4.使用Lambda表达式进行映射

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
List lengths=new ArrayList();
for(String fruit:list){lengths.add(fruit.length);
}

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
List<String> lengths=list.stream().map(fruit->fruit.length()).collect(Collectors.toList());

5.使用Lambda表达式进行归约

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
int sum=0;
for(int i :list){sum+=i;
}

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
int sum=list.stram().reduce(0,(a,b)->a+b);

6.使用Lambda表达式进行分组

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
Map<Integer,List<String>> grouped=new Hahmap<>();
for(String fruit :list){int length=fruit.length();if(!grouped.containsKey(length)){grouped.put(length,new ArrayList<String>());}grouped.get(length).add(fruit);
}

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
Map<Integer,List<String>> grouped=list.stram().collect(Collectors.groupingBy(fruit->fruit.length()));

7.使用Lambda表达式进行函数式接口的实现

❌ 未使用Lambda表达式:

java">public interface MyInterface{public void doSomething(String fruit);
}MyInterface  myObject=new MyInterface(){public void doSomething(String input){System.out.doSomething(input);}
};
myObject.doSomething("Hello World");

✅使用Lambda表达式:

java">MyInterface myObject=input->System.out.println(input);
myObject.doSomething("Hello world");

8.使用Lambda表达式进行线程的创建

❌ 未使用Lambda表达式:

java">Thread thread=new Thread(new Runnable(){\puhlic void run(){System.out.println("Thread is Running");}
});
thread.start();

✅使用Lambda表达式:

java">Thread thread=new Thread(()->System.out.println("Thread is Running."));
thread.start();

9.使用Lambda表达式进行Optional的操作

❌ 未使用Lambda表达式:

java">String str="Hello World";
if(str!=null){System.out.println(str.toUppercase());
}

✅使用Lambda表达式:

java">Optional str=Optional.ofNullable("Hello World");
str.map(String::toUppercase).ifPresent(System.out.println);

10.使用Lambda表达式进行Stream的流水线操作

❌ 未使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
List<String> filteredList=new ArrayList<>();
for(String fruit:list){if(fruit.startWith("a")){filteredList.add(fruit.toUppercase());}
}
Collections.sort(filteredList);

✅使用Lambda表达式:

java">List list = Arrays.aslist("apple", "banana", "orange");
List<String> filteredList=list.stram().filter(fruit->fruit.startsWith("a"))
.map(String::toUppercase)
.sorted().Collect(Collectors.toList);

http://www.ppmy.cn/server/40889.html

相关文章

OpenHarmony开发案例【大合集】

OpenHarmony Codelabs 概要简介 为帮助开发者快速熟悉OpenHarmony的能力以及相关的应用开发流程&#xff0c;我们提供了一系列的基于趣味场景的应用示例&#xff0c;即Codelabs&#xff0c;开发者可以根据我们的文档一步步的学习和完成简单项目的开发。 目录 优秀案例 一次开…

力扣2105---给植物浇水II(Java、模拟、双指针)

题目描述&#xff1a; Alice 和 Bob 打算给花园里的 n 株植物浇水。植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。 每一株植物都需要浇特定量的水。Alice 和 Bob 每人有一个水罐&#xff0c;最初是…

怎样写出播放千万的文案?(有模板哦!)沈阳短视频运营培训

这样的一张图片放在你面前&#xff0c;你会想要点进去继续观看吗&#xff1f; 但是配上文案&#xff1a;坚持过6秒&#xff0c;你就会发现自己居然瞎了眼 这样&#xff0c;你会不会就想点进去&#xff0c;坚持个6秒&#xff0c;倒要看看能玩出什么新花样。 其实在我们日常的生…

【Linux】自动化构建工具make/Makefile和git介绍

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12625432.html 目录 前言 Linux项目自动化构建工具-make/Makefile 举例 .PHONY 常见符号 依赖关系…

Vue3的setup

Vue3的setup setup选项是一个接收props和context的函数是一个新的组件选项&#xff0c;作为Composition-API的入口点&#xff0c;只会被执行一次&#xff0c;用于建立数据与逻辑的连接。 注意点 在执行setup函数时&#xff0c;还没执行created生命周期方法&#xff0c;因此在s…

微信小程序开发秘籍:解锁音频录制与录音功能的奥秘

微信小程序开发秘籍&#xff1a;解锁音频录制与录音功能的奥秘 在微信小程序的开发旅程中&#xff0c;音频功能的集成可以极大地丰富用户体验&#xff0c;特别是在教育、娱乐、社交等领域。本文将引领你深入了解如何在微信小程序中实现音频录制和播放功能&#xff0c;从基本概…

autolabor(ROS开发笔记)__1

视频链接&#xff1a;ROS机器人 chapter 1 ROS概述与环境搭建 学习步骤&#xff1a; 1.了解该模块的相关概念 是什么&#xff0c;为什么学&#xff0c;前世今生&#xff0c;发展前景 2.安装官方软件包 具备基本的开发环境&#xff0c;简陋notepad 3.搭建集成开发环境(IDE,Int…

网页版五子棋的自动化测试

目录 前言 一、主要技术 二、测试环境的准备部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 登录页面 注册页面 游戏大厅页面 游戏房间页面 测试套件结果 4.3、界面测试 登录页面 注册页面 游戏大…

Android 的 Timer 和 TimerTask

Timer 简介(来自Gemini) Timer 是 Java 中用于创建定时任务的类。它位于 java.util 包中。可以使用 Timer 来安排一次性或定期执行的任务。 每个 Timer 对象都对应一个后台线程。此线程负责从任务队列中检索任务并按计划执行它们。 使用 Timer 要使用 Timer&#xff0c;首先…

【4089】基于小程序实现的互动打卡系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

mybatis 逻辑分页和物理分页的区别是什么?

MyBatis 的逻辑分页和物理分页在分页处理方式和优缺点上存在一些区别。 分页处理方式&#xff1a; 逻辑分页&#xff1a;逻辑分页是一次性查询出符合要求的所有数据&#xff0c;然后在这些数据中进行分页处理。MyBatis 提供了 RowBounds 工具来实现逻辑分页&#xff0c;它实际上…

Vue 中 $nextTick 的作用是什么?

目录 一、NextTick是什么 为什么要有nexttick 二、使用场景 三、实现原理 一、NextTick是什么 官方对其的定义 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM 什么意思呢&#xff1f; 我们可以理解成&#xff0c…

数据科学:使用Optuna进行特征选择

大家好&#xff0c;特征选择是机器学习流程中的关键步骤&#xff0c;在实践中通常有大量的变量可用作模型的预测变量&#xff0c;但其中只有少数与目标相关。特征选择包括找到这些特征的子集&#xff0c;主要用于改善泛化能力、助力推断预测、提高训练效率。有许多技术可用于执…

跨平台应用开发神器Uniapp

Uniapp是一款基于Vue.js框架的跨平台应用开发框架。它可以将同一份代码编译生成多个应用程序&#xff0c;包括iOS、Android、H5、小程序等。在这篇文章中&#xff0c;我们将详细介绍Uniapp的特点、优势以及如何使用Uniapp开发跨平台应用。 一、Uniapp的特点 1、跨平台开发 U…

实用的Chrome命令 帮你打开Chrome浏览器的隐藏功能

前言 Chrome作为主力浏览器&#xff0c;支持相当丰富的第三方扩展&#xff0c;其实浏览器本身也内置了大量实用的命令。许多实用的功能并没有直接显示在Chrome的菜单上。在这篇文章中&#xff0c;我们将介绍几个实用的chrome:// commands。 通过下面整理的 Chrome 命令&#x…

Linux is命令参数和选项

在Linux系统中&#xff0c;命令行是一个非常重要且强大的工具&#xff0c;能够通过命令来完成各种任务。在使用Linux命令时&#xff0c;命令通常会有一些参数和选项&#xff0c;它们可以对命令的行为进行指定和调整&#xff0c;让我们更灵活地使用命令。 首先&#xff0c;让我…

软件设计师考试---一系列

直接内存存取 直接内存存取&#xff08;Direct Memory Access&#xff0c;简称DMA&#xff09;是计算机处理器中的一种特性&#xff0c;它允许外部存储器&#xff08;例如硬盘或网络适配器&#xff09;在不需要中央处理器的干预下直接访问计算机的内存空间。这种机制显著加快了…

csapp proxy lab part 1

host, hub, 路由器&#xff0c;和 交换机 当手机连接到局域网中时&#xff0c;它需要找到网络中的交换机&#xff08;Switch&#xff09;。这通常是通过 DHCP&#xff08;动态主机配置协议&#xff09;完成的。DHCP服务器负责向手机分配IP地址、子网掩码、网关地址等网络配置信…

nacos命名空间的配置

给微服务配置namespace 给微服务配置namespace只能通过修改配置来实现。 例如&#xff0c;修改order-service的application.yml文件&#xff1a; spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZnamespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f…