【JDK 8-Lambda】3.1 Java高级核心玩转 JDK8 Lambda 表达式

一、 什么是函数式编程 ?

二、 什么是lambda表达式?

1. 先看两个示例  

A.【创建线程】

B.【数组排序-降序】

2. lambda表达式特性

A. 使用场景(前提):

B. 语法

(params) -> expression

C. 参数列表

D. 方法体

F. 好处


一、 什么是函数式编程 ?

  • 将一个函数(也称“行为”)作为一个参数进行传递

  • 面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象 (将行为作为一个参数进行传递)

  • 支持版本:JDK 8 及以上

二、 什么是lambda表达式?

1. 先看两个示例  

A.【创建线程】
  • jdk8之前

        new Thread(new Runnable() {@Overridepublic void run() {System.out.println("【创建线程】jdk8之前");}}).start();
  • jdk8之后 Lambda表达式

new Thread(()-> System.out.println("【创建线程】jdk8之后 Lambda表达式")).start();
B.【数组排序-降序】
  •  jdk8之前

        List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});System.out.println("jdk8之前写法:升序》");for (String s : list) {System.out.println( s);}
  • jdk8之后 Lambda表达式

        Collections.sort(list, (a, b) -> b.compareTo(a));System.out.println("jdk8之后lambda写法:降序》");for (String s : list) {System.out.println(s);}

2. lambda表达式特性

A. 使用场景(前提):
  • 一个接口中只包含一个方法,则可以使用Lambda表达式

  • 这样的接口称之为"函数接口"

B. 语法
(params) -> expression
  • 第一部分为括号内用 逗号分隔的形式参数,参数是函数式接口里面方法的参数

  • 第二部分为一个箭头符号:->;

  • 第三部分为 方法体可以是表达式和代码块

C. 参数列表
  • 括号中参数列表的数据类型可以省略不写

  • 括号中的参数只有一个,那么参数类型和()都可以省略不写

D. 方法体
  • 如果{}中的代码只有一行,无论有返回值,可以省略 {},return,分号

  • {},return,分号 要一起省略

//两种写法等效Collections.sort(list, (a, b) -> b.compareTo(a));Collections.sort(list, (a, b) -> {return b.compareTo(a);});

F. 好处

  • Lambda 表达式的实现方式在本质是以匿名内部类的方式进行实现

  • 重构现有髓肿代码,更高的开发效率,尤其是集合Collection操作
     

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

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

相关文章

Wrapper可以构造的复杂查询条件汇总

目录 概述1、eq&#xff1a;等于条件2、ne&#xff1a;不等于条件3、gt&#xff1a;大于条件4、ge&#xff1a;大于等于条件5、lt&#xff1a;小于条件6、le&#xff1a;小于等于条件7、like&#xff1a;模糊查询条件8、notLike&#xff1a;不包含关键字的模糊查询条件9、左模糊…

实在智能携手40+央企,探索财务大模型及数智化实践与应用

“这次培训给我一个最大的感触就是&#xff0c;过去以为AI智能化、大模型技术是很高深的事情。但现在&#xff0c;我们通过RPA等数字化工具&#xff0c;自主根据自己的工作岗位&#xff0c;完成业务自动化流程的开发和设计。AI技术没有想象中的那么难入门。” 这是一位参加了“…

持续集成Jenkins安装部署

Jenkins是一个在DevOps领域中、支持CI/CD&#xff08;持续集成/持续交付&#xff09;过程域的开源项目&#xff0c;其提供可扩展插件的支持&#xff0c;以自动化的机制对项目工程执行打包、编译、构建、测试以及最终发布到目的地服务器并成功部署运行&#xff0c;本文主要描述J…

如何在批发零售业运用IPD?

批发零售业指购进商品后&#xff0c;再向其他批发或零售单位&#xff08;含个体经营者&#xff09;及其他企事业单位、机关团体等批量销售生活用品、生产资料的活动&#xff0c;以及从事进出口贸易和贸易经纪与代理的活动&#xff0c;包括拥有货物所有权&#xff0c;并以本单位…

左神高级提升班2 约瑟夫环结构

目录 【案例1】 【题目描述】 【输入描述&#xff1a;】 【输出描述&#xff1a;】 【输入】 【输出】 【思路解析】 【代码实现】 【案例1】 【题目描述】 某公司招聘&#xff0c;有n个人入围&#xff0c;HR在黑板上依次写下m个正整数A1、A2、……、Am&#xff0c;然后…

如何在JoySSL上申请免费的SSL证书

1&#xff0c;前往 JoySSL 的官方网站注册页面&#xff0c;创建一个账号并登录您的 JoySSL 账户。 扫码注册账号申请免费证书https://www.joyssl.com/certificate/select/free.html?nid52&#xff0c;找到并选择你需要的 SSL 证书相关的功能或选项。 3&#xff0c;提供您的域…

springboot实现发送邮箱验证码

准备工作 在邮箱官网开放SMTP授权&#xff0c;获取相应密钥&#xff0c;才可以进行发送邮件 这里以网易163邮箱为例&#xff0c;登录邮箱后&#xff0c;依次点击“设置-POP3/SMTP/IMAP” &#xff0c;然后开启SMTP服务。这时候会提示一个授权码&#xff0c;例如&#xff1a;H…

全流程ARCGIS Pro技术应用教程

详情点击公众号链接&#xff1a;全流程ARCGIS Pro技术应用教程 前沿 GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关…

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1(HiDataPlus)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

Matlab中(:,1)和(:,end)和[~, A]的含义与用法

背景 阅读Moses Chong-ook Nah的DMP-MATLAB程序记录。 github链接&#xff1a;https://github.com/mosesnah-shared/DMP-MATLAB 如果不知道某个函数或变量的作用&#xff0c;直接打印出来&#xff0c;看看输出是什么。不知道matlab如何打印&#xff1f;程序后面的分号;去掉就…

Day1-DeepWalk

论文《DeepWalk: Online Learning of Social Representations》 2014年发表在数据挖掘顶会ACM SIGKDD&#xff08;KDD&#xff09;上的论文 目的&#xff1a;学习节点表示 推动&#xff1a;将自然语言处理里面的无监督学习方法迁移至此 思路&#xff1a;将图结构序列化&#x…

C#中实现校验是否包含中文与http接口地址中解析ip和端口号

场景 Winform/CSharp中实现对Http接口地址、IP地址字符串格式/合法性校验&#xff1a; Winform/CSharp中实现对Http接口地址、IP地址字符串格式/合法性校验_c# 检查ip格式_霸道流氓气质的博客-CSDN博客 在上面的基础上对某http接口地址(ip加端口号&#xff0c;示例http://12…

深入电机控制基础知识(1)- 磁共能与电磁转矩

1.1 概述 打开任意一本电机学的教材&#xff0c;翻到电机基本概念的说明的位置&#xff0c;总能看到一句描述电机本质的话&#xff1a;电机是一种机电能量转化的装置。 机电能量转化&#xff0c;很生动形象的说明电机的工作原理。对于电动机而言&#xff0c;吸收电能&#xff…

LuatOS-SOC接口文档(air780E)--errDump - 错误上报

示例 -- 基本用法, 10分钟上报一次,如果有的话 if errDump thenerrDump.config(true, 600) end-- 附开源服务器端: https://gitee.com/openLuat/luatos-devlogerrDump.dump(zbuff, type, isDelete) 手动读取异常日志&#xff0c;主要用于用户将日志发送给自己的服务器而不是I…

全网首发YOLOv5/YOLOv7暴力涨点:Gold-YOLO,遥遥领先,超越所有YOLO | 华为诺亚NeurIPS23

💡💡💡本文独家改进:提出了全新的信息聚集-分发(Gather-and-Distribute Mechanism)GD机制,Gold-YOLO,替换yolov5 head部分 实现暴力涨点 Gold-YOLO | 亲测在多个数据集能够实现大幅涨点 💡💡💡Yolov5/Yolov7魔术师,独家首发创新(原创),适用于Yolov5、…

优思学院|如何解读Minitab中测量系统分析(MSA GRR)的结果?

在现代制造和质量控制过程中&#xff0c;精确的测量是至关重要的。为了确保我们的测量工具可靠&#xff0c;我们需要评估其重复性与再现性。这就是测量系统分析&#xff08;Measurement System Analysis&#xff0c;简称MSA&#xff09;的关键目标之一。以下将介绍如何使用Mini…

Vue如何监听键盘事件

引言 在Web开发中&#xff0c;键盘事件是非常常见的交互方式之一。Vue作为一种流行的JavaScript框架&#xff0c;提供了一种简单而灵活的方式来监听键盘事件。本文将介绍如何在Vue中监听键盘事件&#xff0c;并展示一些实用的示例。 目录 Vue中监听键盘事件的基本用法监听特定…

前端进阶--深入理解JavaScript

1、JS的作用域和作用域链 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问&#xff0c;通过作用域链&#xff0c;我们可以访问到外层环境的变量和函数。作用域链的本质上是一个指向变量对象的指针列表。变量对象是一个包含了执行环境中所有变量和函数的对象…

IDEA下使用Spring MVC

<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…

【GO】LGTM_Grafana_gozero_配置trace(4)_代码实操及追踪

最近在尝试用 LGTM 来实现 Go 微服务的可观测性&#xff0c;就顺便整理一下文档。 Tempo 会分为 4 篇文章&#xff1a; Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架发送数据到 tempo 本文就是写一下如何在 go-zero 微服务框架里面配置 t…