Java学习笔记(八)——Lambda表达式
文章目录
- Lambda表达式
- Lambda表达式的省略写法
- Lambda练习
- 练习1
- 练习2
- 算法题
- 算法题1 斐波那契数列
- 算法题2 猴子吃桃子
- 算法题3 爬楼梯
Lambda表达式
Lambda表达式是JDK8开始的一种新语法形式。
基本作用:简化函数式接口的匿名内部类的写法。
注意:
- Lambda表达式可以用来简化匿名内部类的书写
- Lambda表达式只能简化函数式接口的匿名内部类的写法
函数式接口:
有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解


import java.util.Arrays;
import java.util.Comparator;public class test41 {public static void main(String[] args) {Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};Arrays.sort(integers, (Integer o1, Integer o2) -> {return o1 - o2;});System.out.println(Arrays.toString(integers)); //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]}
}
Lambda表达式的省略写法
省略核心:可推导,可省略。
省略规则:
1.参数类型可以省略不写。
import java.util.Arrays;
import java.util.Comparator;public class test41 {public static void main(String[] args) {Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};Arrays.sort(integers, (o1, o2) -> {return o1 - o2;});System.out.println(Arrays.toString(integers)); //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]}
}
2.如果只有一个参数,参数类型可以省略,同时()也可以省略。
3.如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,注意三者需要同时省略。

import java.util.Arrays;
import java.util.Comparator;public class test41 {public static void main(String[] args) {Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};Arrays.sort(integers, (o1, o2) -> o1-o2);System.out.println(Arrays.toString(integers)); //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]}
}
Lambda练习
练习1
定义数组并存储一些字符串,按照字符串的长度进行排序,
短的在前,长的在后
import java.util.Arrays;
import java.util.Comparator;public class test42 {public static void main(String[] args) {String[] strings = {"cjm", "cjm_big_pig", "cjm_pig"};Arrays.sort(strings, (o1, o2) -> o1.length()-o2.length());System.out.println(Arrays.toString(strings)); //[cjm, cjm_pig, cjm_big_pig]}
}
练习2
定义数组并存储一些对象,
要求1:属性有姓名,年龄,身高
要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样
按照姓名的字母进行排序(姓名中不要有中文或特殊字符)
public class pig {private String name;private int age;private int height;public pig() {}public pig(String name, int age, int height) {this.name = name;this.age = age;this.height = height;}public String getName() {return name;}public int getAge() {return age;}public int getHeight() {return height;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public void setHeight(int height) {this.height = height;}}
import java.util.Arrays;
import java.util.Comparator;public class test43 {public static void main(String[] args) {pig pig1 = new pig("cjm", 29, 160);pig pig2 = new pig("djm", 25, 165);pig pig3 = new pig("djm", 25, 175);pig pig4 = new pig("cjm", 25, 175);pig[] pigs = {pig1, pig2, pig3, pig4};Arrays.sort(pigs, new Comparator<pig>() {@Overridepublic int compare(pig o1, pig o2) {if (o1.getAge() != o2.getAge()) {return o1.getAge() - o2.getAge();} else {if (o1.getHeight() != o2.getHeight()) {return o1.getHeight() - o2.getHeight();} else {return o1.getName().compareTo(String.valueOf(o2));}}}});for (pig pig : pigs) {System.out.println(pig.getName() + " " + pig.getAge() + " " + pig.getHeight());}}
}
运行结果:
djm 25 165
cjm 25 175
djm 25 175
cjm 29 160
算法题
算法题1 斐波那契数列


import java.util.ArrayList;public class test44 {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);arrayList.add(1);for (int i = 2; i < 20; i++) {arrayList.add(arrayList.get(i - 1) + arrayList.get(i - 2));}System.out.println(arrayList.get(11)); //144}
}
算法题2 猴子吃桃子

public class test45 {public static void main(String[] args) {int[] ints = new int[10];ints[9] = 1;for (int i = 8; i >= 0; i--) {ints[i] = (ints[i + 1] + 1) * 2;}System.out.println(ints[0]); //1534}
}
public class test45 {public static void main(String[] args) {System.out.println(getCount(1));}public static int getCount(int day){if(day<=0||day>=11){System.out.println("时间错误!");return -1;}if(day==10){return 1;}return (getCount(day+1)+1)*2;}
}
算法题3 爬楼梯



public class test46 {public static void main(String[] args) {System.out.println(Fn(20)); //10946}public static int Fn(int n) {if (n == 1) {return 1;}if (n == 2) {return 2;}return Fn(n - 1) + Fn(n - 2);}
}
一次可以爬1个或2个或3个台阶:
public class test46 {public static void main(String[] args) {System.out.println(Fn(20)); //121415}public static int Fn(int n) {if (n == 1) {return 1;}if (n == 2) {return 2;}if (n == 3) {return 4;}return Fn(n - 1) + Fn(n - 2) + Fn(n - 3);}
}
相关文章:
Java学习笔记(八)——Lambda表达式
文章目录 Lambda表达式Lambda表达式的省略写法Lambda练习练习1练习2 算法题算法题1 斐波那契数列算法题2 猴子吃桃子算法题3 爬楼梯 Lambda表达式 Lambda表达式是JDK8开始的一种新语法形式。 基本作用:简化函数式接口的匿名内部类的写法。 注意: Lam…...
【JavaEE】CAS
作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…...
Linux 系统之部署 h5ai 目录列表程序
一、h5ai 介绍 1.1)h5ai 简介 h5ai 是用于 HTTP Web 服务器的现代文件索引器,专注于您的文件。目录以吸引人的方式显示,浏览它们通过不同的视图、面包屑和树概述得到增强。最初 h5ai 是 HTML5 Apache Index 的首字母缩写,但现在它…...
MySQL自增ID耗尽探究:分析与解决方案
MySQL自增ID耗尽探究:分析与解决方案 一、引言 在面试过程中,面试官抛出了一个看似简单却又深入的问题:“MySQL的自增ID用完了,怎么办?” 自增ID耗尽可能看似遥远,但在处理大量数据的系统中,…...
操作系统-操作系统引导(磁盘 操作系统引导过程)
文章目录 总览一个刚买来的磁盘(硬盘)往磁盘安装操作系统后操作系统引导过程例:windows操作系统的初始化程序 总览 一个刚买来的磁盘(硬盘) 此时空空如也 往磁盘安装操作系统后 操作系统在C盘 主引导记录不属于某…...
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)
地址簿相关功能 1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码实现1.2.1 Mapper层1.2.2 Service层1.2.3 Controller层 1.1 需求分析和设计 1.1.1 产品原型 地址簿,指的是消费者用户的地址信息,用户登录成功后可以维护自己的地…...
SAP S/4HANA 2023 Fully-Activated Appliance 虚拟机版介绍
注:市面上所有在售虚拟机均为拷贝本人所作的虚拟机,存在各种技术问题,请知悉。 SAP S4HANA 2023 FAA版本内置了四个Client: 1、000:SAP初始Client,原则上不能动; 2、100:只激活了US…...
【Docker篇】详细讲解容器相关命令
🎊专栏【Docker】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🛸容器🌹相关命令🍔案例⭐创建并运…...
LSTM学习笔记
上一篇文章中我们提到,CRNN模型中用于预测特征序列上下文的模块为双向LSTM模块,本篇中就来针对该模块的结构和实现做一些理解。 Bidirectional LSTM模块结构如下图所示: 在Pytorch中,已经集成了LSTM模块,定义如下&…...
Android 13.0 Recent列表不显示某个app
1.概述 在13.0 的系统产品rom定制化开发中,在点击导航栏最近任务列表时,如果做到不显示某个app 呢 一种做法是在app中直接处理 一种做法是在framework中处理 接下来看这两种处理方法 1, app中处理 为该应用AndroidManifest xml文件中主MainActivity设置属性 android:exclu…...
速盾网络:高防ip是什么
速盾网络:高防IP是什么 在当今信息化社会中,网络安全问题日益突出,各种网络攻击威胁层出不穷。为了保护企业的网络安全,提高网络业务的稳定性,高防IP应运而生。那么,什么是高防IP呢? 高防IP是…...
全志A133AndroidQ编译方式
编译uboot: cd longan/brandy/brandy-2.0 ./build.sh -p sun50iw10p1 //A133-android-10-plus\longan\brandy\brandy-2.0\u-boot-2018\u-boot.bin复制为u-boot-sun50iw10p1.bin 或者 //longan\brandy\brandy-2.0\u-boot-2018\configs\sun50iw10p1_defconfig cd …...
2024首更---Web Service 教程
Web Services 简介 Web Services 可使您的应用程序成为 Web 应用程序。 Web Services 通过 Web 进行发布、查找和使用。 您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解: HTMLXML 如果您希望首先学习这些项目,请在…...
Day29- 贪心算法part03
一、K 次取反后最大化的数组和 题目一:1005. K 次取反后最大化的数组和 1005. K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰…...
RPA与ChatGPT的融合:智能化流程的未来
RPA(Robotic Process Automation)是一种利用软件机器人模拟人类操作的技术,可以实现对各种业务流程的自动化执行。ChatGPT是一种基于深度学习的自然语言生成模型,可以根据给定的上下文生成流畅、连贯、有逻辑的文本。RPA与ChatGPT…...
Ubuntu安装maven并且配置阿里源
ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(十二)——Ubuntu安装maven并且配置阿里源 文章目录 Ubuntu系统环境搭建(十二)——Ubuntu安装maven并且配置阿里源1.安装maven1.1更新源列表1.2安装1.3验证 2.配置阿…...
如何通过idea使用JDK8.0创建Spring项目
目前 IDEA 进行了优化,所以我们在创建 Spring 项目时会发现,以及不能选择通过 JDK8.0 创建了,这是因为官方已经不再提供 JDK8.0 创建 Spring 项目,我们可以通过修改创建 Spring 项目的路径来解决该问题 在创建 Spring 项目的页面&…...
Spark读取kafka(流式和批数据)
spark读取kafka(批数据处理) # 按照偏移量读取kafka数据 from pyspark.sql import SparkSessionss SparkSession.builder.getOrCreate()# spark读取kafka options {# 写kafka配置信息# 指定kafka的连接的broker服务节点信息kafka.bootstrap.servers: n…...
经典目标检测YOLO系列(二)YOLOV2的复现(1)总体网络架构及前向推理过程
经典目标检测YOLO系列(二)YOLOV2的复现(1)总体网络架构及前向推理过程 和之前实现的YOLOv1一样,根据《YOLO目标检测》(ISBN:9787115627094)一书,在不脱离YOLOv2的大部分核心理念的前提下,重构一款较新的YOLOv2检测器,来对YOLOV2有…...
怎样使用崭新的硬盘
新买的一块硬盘,接到电脑上,打开机器,却找不到新的硬盘,怎么回事?新的硬盘是坏的么?怎样才能把新硬盘用起来? 可能有几种原因导致您的电脑无法识别新的硬盘。以下是一些建议的解决方法ÿ…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
