当前位置: 首页 > news >正文

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开始的一种新语法形式。 基本作用&#xff1a;简化函数式接口的匿名内部类的写法。 注意&#xff1a; Lam…...

【JavaEE】CAS

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…...

Linux 系统之部署 h5ai 目录列表程序

一、h5ai 介绍 1.1&#xff09;h5ai 简介 h5ai 是用于 HTTP Web 服务器的现代文件索引器&#xff0c;专注于您的文件。目录以吸引人的方式显示&#xff0c;浏览它们通过不同的视图、面包屑和树概述得到增强。最初 h5ai 是 HTML5 Apache Index 的首字母缩写&#xff0c;但现在它…...

MySQL自增ID耗尽探究:分析与解决方案

MySQL自增ID耗尽探究&#xff1a;分析与解决方案 一、引言 在面试过程中&#xff0c;面试官抛出了一个看似简单却又深入的问题&#xff1a;“MySQL的自增ID用完了&#xff0c;怎么办&#xff1f;” 自增ID耗尽可能看似遥远&#xff0c;但在处理大量数据的系统中&#xff0c;…...

操作系统-操作系统引导(磁盘 操作系统引导过程)

文章目录 总览一个刚买来的磁盘&#xff08;硬盘&#xff09;往磁盘安装操作系统后操作系统引导过程例&#xff1a;windows操作系统的初始化程序 总览 一个刚买来的磁盘&#xff08;硬盘&#xff09; 此时空空如也 往磁盘安装操作系统后 操作系统在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 产品原型 地址簿&#xff0c;指的是消费者用户的地址信息&#xff0c;用户登录成功后可以维护自己的地…...

SAP S/4HANA 2023 Fully-Activated Appliance 虚拟机版介绍

注&#xff1a;市面上所有在售虚拟机均为拷贝本人所作的虚拟机&#xff0c;存在各种技术问题&#xff0c;请知悉。 SAP S4HANA 2023 FAA版本内置了四个Client&#xff1a; 1、000&#xff1a;SAP初始Client&#xff0c;原则上不能动&#xff1b; 2、100&#xff1a;只激活了US…...

【Docker篇】详细讲解容器相关命令

&#x1f38a;专栏【Docker】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f6f8;容器&#x1f339;相关命令&#x1f354;案例⭐创建并运…...

LSTM学习笔记

上一篇文章中我们提到&#xff0c;CRNN模型中用于预测特征序列上下文的模块为双向LSTM模块&#xff0c;本篇中就来针对该模块的结构和实现做一些理解。 Bidirectional LSTM模块结构如下图所示&#xff1a; 在Pytorch中&#xff0c;已经集成了LSTM模块&#xff0c;定义如下&…...

Android 13.0 Recent列表不显示某个app

1.概述 在13.0 的系统产品rom定制化开发中,在点击导航栏最近任务列表时,如果做到不显示某个app 呢 一种做法是在app中直接处理 一种做法是在framework中处理 接下来看这两种处理方法 1, app中处理 为该应用AndroidManifest xml文件中主MainActivity设置属性 android:exclu…...

速盾网络:高防ip是什么

速盾网络&#xff1a;高防IP是什么 在当今信息化社会中&#xff0c;网络安全问题日益突出&#xff0c;各种网络攻击威胁层出不穷。为了保护企业的网络安全&#xff0c;提高网络业务的稳定性&#xff0c;高防IP应运而生。那么&#xff0c;什么是高防IP呢&#xff1f; 高防IP是…...

全志A133AndroidQ编译方式

编译uboot&#xff1a; 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 进行发布、查找和使用。 您应当具备的基础知识 在继续学习之前&#xff0c;您需要对下面的知识有基本的了解&#xff1a; HTMLXML 如果您希望首先学习这些项目&#xff0c;请在…...

Day29- 贪心算法part03

一、K 次取反后最大化的数组和 题目一&#xff1a;1005. K 次取反后最大化的数组和 1005. K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰…...

RPA与ChatGPT的融合:智能化流程的未来

RPA&#xff08;Robotic Process Automation&#xff09;是一种利用软件机器人模拟人类操作的技术&#xff0c;可以实现对各种业务流程的自动化执行。ChatGPT是一种基于深度学习的自然语言生成模型&#xff0c;可以根据给定的上下文生成流畅、连贯、有逻辑的文本。RPA与ChatGPT…...

Ubuntu安装maven并且配置阿里源

ubuntu环境搭建专栏&#x1f517;点击跳转 Ubuntu系统环境搭建&#xff08;十二&#xff09;——Ubuntu安装maven并且配置阿里源 文章目录 Ubuntu系统环境搭建&#xff08;十二&#xff09;——Ubuntu安装maven并且配置阿里源1.安装maven1.1更新源列表1.2安装1.3验证 2.配置阿…...

如何通过idea使用JDK8.0创建Spring项目

目前 IDEA 进行了优化&#xff0c;所以我们在创建 Spring 项目时会发现&#xff0c;以及不能选择通过 JDK8.0 创建了&#xff0c;这是因为官方已经不再提供 JDK8.0 创建 Spring 项目&#xff0c;我们可以通过修改创建 Spring 项目的路径来解决该问题 在创建 Spring 项目的页面&…...

Spark读取kafka(流式和批数据)

spark读取kafka&#xff08;批数据处理&#xff09; # 按照偏移量读取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一样&#xff0c;根据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;在不脱离YOLOv2的大部分核心理念的前提下&#xff0c;重构一款较新的YOLOv2检测器&#xff0c;来对YOLOV2有…...

怎样使用崭新的硬盘

新买的一块硬盘&#xff0c;接到电脑上&#xff0c;打开机器&#xff0c;却找不到新的硬盘&#xff0c;怎么回事&#xff1f;新的硬盘是坏的么&#xff1f;怎样才能把新硬盘用起来&#xff1f; 可能有几种原因导致您的电脑无法识别新的硬盘。以下是一些建议的解决方法&#xff…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...