【JAVA入门】Day26 - Lambda表达式

news2024/9/23 11:24:11

【JAVA入门】Day26 - Lambda表达式


文章目录

  • 【JAVA入门】Day26 - Lambda表达式
    • 一、函数式编程
    • 二、Lambda表达式的省略写法


        Lambda表达式在代码中最常用的功能就是简化匿名内部类的书写。

Ingeger[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};

Arrays.sort(arr, new Comparator<Integer>() {
	@Override
	public int compare(Integer o1,Integer o2) {
		return o1 - o2;
	}
});

System.out.println(Arrays.toString(arr));		//[1, 2, 3, 4, 5, 6, 7, 8, 9]

        改写为Lambda表达式的书写格式为:

Arrays.sort(arr, (Integer o1,Integer o2)->{
		return o1 - o2;
	}
);

        一个 -> 就节省了大部分的代码。

一、函数式编程

        函数式编程(Functional Programming)是一种思想特点。之前我们的面向对象的语法是:先找对象,让对象做事情。而函数式编程思想,可以忽略面向对象的复杂语法,强调做什么,而不是谁去做
        Lambda表达式是 JDK8 开始后的一种新语法形式。他的格式很简单只有三部分:

() -> {

}
  • ()对应着方法的形参
  • -> 是固定格式
  • {} 对应着方法的方法体

在这里插入图片描述

注意点:

  • Lambda 表达式可以同来简化匿名内部类的书写。
  • Lambda 表达式只能简化函数式接口的匿名内部类的写法。
  • 函数式接口:有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加 @FunctionalInterface 注解。
package Lambda;

public class LambdaTest1 {
    public static void main(String[] args) {
        //1.利用匿名内部类的形式调用下面的方法
        method(new Swim() {
            @Override
            public void swimming() {
                System.out.println("游泳");
            }
        });

        //2.利用Lambda表达式进行改写
        method(()->{
            System.out.println("游泳");
        });
    }

    public static void method(Swim s) {
        s.swimming();
    }
}
@FunctionalInterface
interface Swim{
    public abstract void swimming();
}

二、Lambda表达式的省略写法

        Lambda表达式的省略核心是:可推导,可省略。
        Lambda表达式的省略规则:

  • 1.参数类型可以省略不写。
  • 2.如果只有一个参数,参数类型可以省略,同时( )也可以省略。
  • 如果Lambda表达式的方法体只有一行,大括号、分号、return也可以省略不写,但需要同时省略。
package Lambda;

import java.util.Arrays;
import java.util.Comparator;

public class LambdaTest2 {
    public static void main(String[] args) {
        Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};

        Arrays.sort(arr, new Comparator<>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });

        //lambda完整格式
        Arrays.sort(arr, (Integer o1, Integer o2)-> {
            return o1 - o2;
        });

        //lambda省略格式
        Arrays.sort(arr,(o1, o2) -> o1 - o2);
    }
}

【练习】Lambda表达式简化Comparator接口的匿名形式。
要求定义数组并存储一些字符串,利用 Arrays 中的 sort 方法进行排序。按照字符串长度,短的在前,长的在后。

package Lambda;

import java.util.Arrays;
import java.util.Comparator;

public class LambdaTest3 {
    public static void main(String[] args) {
        String[] arr = {"a", "aaaa", "aaa", "aa"};

        //排序
        Arrays.sort(arr, new Comparator<String>(){
            @Override
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();
            }
        });

        //Lambda表达式
        Arrays.sort(arr, (o1, o2)-> o1.length() - o2.length());

        System.out.println(Arrays.toString(arr));
    }
}

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

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

相关文章

【深度学习与NLP】——深度卷积神经网络AlexNet

目录 一、卷积神经网络的发展历程 二、简要介绍 三、代码实现 四、缺点和过时的地方 一、卷积神经网络的发展历程 早期理论基础阶段&#xff08;20 世纪 60 年代 - 80 年代&#xff09;&#xff1a; 1968 年&#xff0c;Hubel 和 Wiesel 通过对猫视觉神经的研究&#xff0…

Amazon Bedrock 实践:零基础创建贪吃蛇游戏

本文探讨了如何利用 Amazon Bedrock 和大型语言模型&#xff0c;快速创建经典的贪吃蛇游戏原型代码。重点展示了利用提示工程&#xff0c;将创新想法高效转化为可运行代码方面的过程。文章还介绍了评估和优化提示词质量的最佳实践。 亚马逊云科技开发者社区为开发者们提供全球的…

C++笔记12•面向对象之继承•

继承 1.继承的概念及定义 &#xff08;1&#xff09;概念&#xff1a; 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称…

【Linux】进程|进程的查看与管理|创建进程

目录 1️⃣ 进程的概念&#xff08;Process&#xff09; 1.什么是进程&#xff1f; 2.多进程管理 3. 描述进程-PCB 2️⃣ 进程的查看与管理 1.使用指令查看进程 2.通过系统调用函数查看pid 3.杀掉进程 4.ppid&#xff08;父进程id&#xff09; 3️⃣ 创建进程 fork(…

大模型面试:LLM+向量库的文档对话系统

面试题 1.1 为什么大模型需要外挂(向量)知识库&#xff1f;如何将外部知识注入大模型&#xff0c;最直接的方法&#xff1a;利用外部知识对大模型进行微调 回答 大模型需要外挂(向量)知识库的原因&#xff1a; 知识更新频率&#xff1a;大模型在训练时使用的知识是静态的&a…

关于喷墨打印:液滴喷射及基材影响的那些事儿

大家好&#xff0c;今天我们来探讨一篇关于液滴喷射在生物应用中相关知识的文章——《Understanding droplet jetting on varying substrate for biological applications》是发表于《International Journal of Bioprinting》。在生物打印领域&#xff0c;了解液滴在不同基材上…

做每日计划记录,有什么好的软件推荐2channel茅盾先生《春蚕》苏四嫂的过劳死茅盾的《秋收》主题和象征文学风格

目录 做每日计划记录&#xff0c;有什么好的软件推荐 2channel 茅盾先生《春蚕》 苏四嫂的过劳死 茅盾的《秋收》 主题和象征 文学风格 做每日计划记录&#xff0c;有什么好的软件推荐 做每日计划记录的软件有很多&#xff0c;下面是几款非常实用的推荐&#xff0c;适合…

基于yolov8的人员溺水检测告警监控系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的人员溺水检测告警监控系统是一种高效、智能的安全监控解决方案。该系统利用YOLOv8目标检测算法的先进性能&#xff0c;实现了对水域中人员溺水行为的精准识别与快速响应。 YOLOv8继承了YOLO系列算法的优点&#xff0c;如单次预测、速度快、精度高&a…

牛客周赛 Round 57(A,B,C,D,E,F,G)

比赛链接 官方题解 这场的题还不错&#xff0c;D是一个计算几何&#xff0c;考察到了一些线性代数里叉积的知识&#xff0c;E是爆搜打表&#xff0c;不太常规&#xff0c;所以做起来感觉还不错&#xff1f;FG偏简单&#xff0c;F是multiset线段树&#xff0c;G是很简单的构造…

C语言 | Leetcode C语言题解之第376题摆动序列

题目&#xff1a; 题解&#xff1a; int wiggleMaxLength(int* nums, int numsSize) {if (numsSize < 2) {return numsSize;}int prevdiff nums[1] - nums[0];int ret prevdiff ! 0 ? 2 : 1;for (int i 2; i < numsSize; i) {int diff nums[i] - nums[i - 1];if ((…

maxwell读取mysql binlog到kafka

下载地址 https://maxwells-daemon.io/解压压缩包 tar -zxvf maxwell-1.29.0.tar.gz -C /opt/module/初始化maxwell元数据库 在mysql中为maxwell创建一个数据库 复制 config.properties.example 文件 cp config.properties.example config.properties修改config.propertie…

分享一个基于node.js的宠物医院预约挂号系统vue宠物医院管理系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

JS基础之【各种运算符与运算符的优先级】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…

Nvidia财报前夕:市场预期股价波动创纪录,AI芯片巨头引领市场热潮

引言&#xff1a;Nvidia财报前市场躁动&#xff0c;股价波动预期创新高 随着Nvidia&#xff08;英伟达&#xff09;即将发布其最新财报&#xff0c;全球投资者和交易员们正屏息以待。作为全球人工智能芯片市场的领军者&#xff0c;Nvidia的每一次财报都牵动着市场的神经。据分析…

基于SpringBoot的校园二手交易平台

1.项目介绍 基于SpringBoot实现的校园二手交易平台。 技术框架&#xff1a;SpringBoot2.0.0 MyBatis1.3.2 Mysql5.7 Bootstrap 运行环境&#xff1a;jdk8 IntelliJ IDEA maven3 后台首页、菜单管理、角色管理、用户管理、日志管理、数据备份、分类管理、物品管理、 求…

BMC解决方案丨服务器故障诊断与预测平台方案设计与实现

近日&#xff0c;OurBMC社区理事成员单位浪潮计算机科技有限公司基于开放原子开源大赛的成果梳理了一份成熟的可落地方案——《基于BMC技术的服务器故障诊断与预测平台方案设计与实现》。该方案为开放原子开源大赛的冠军之作&#xff0c;极大推动了社区产业化落地的发展和工作。…

怎么用AI做赚钱的表情包?我来教你!真能轻松变现?我们试了试。

最近看到一则新闻&#xff0c;一个小哥靠做微信表情包赚了几十万&#xff0c;这引起了我的兴趣。 这让我想到&#xff0c;无论是传统的利他思维&#xff0c;还是投资自己的头脑&#xff0c;或者是表情包这样的新兴赚钱方式&#xff0c;成功的路径从未改变。 利他思维&#xff…

SystemTap(stap)脚本举例 包括系统调用监控,函数执行时间 函数出参信息和信号捕捉脚本等

SystemTap 脚本举例 运行环境检查 要想使用SystemTap&#xff0c;需要依赖环境支持。可以执行如下命令查看stap是否已经安装。 stap -ve probe begin { log("hello world") exit () }对内核函数增加探针&#xff0c;需要debuginfo信息&#xff0c;可以通过如下步检…

PyTorch构建神经网络

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 《PyTorch深度学习与企业级项目实战&#xff08;人工智能技术丛书&#xff09;》(宋立桓&#xff0c;宋立林)【摘要 书评 试读】- 京东图书 (jd.com) 训练一个神经网络通常需要提供大量的数据&#xff0c;我们称之…

特殊类设计(5个)与类型转换

引子&#xff1a;在生活中我们经常有不同类的需求&#xff0c;因此我们有了特殊类的设计&#xff08;有很多种模式等&#xff09;。由于类型需求不同我们有了类型转换。今天我们就来略讲略讲一下这方面的知识。 特殊类设计&#xff08;5个&#xff09; 注意&#xff1a;关键字…