首页 > 其他分享 >lambda表达式与流处理(一)

lambda表达式与流处理(一)

时间:2023-11-07 11:27:05浏览次数:32  
标签:处理 接口 抽象 参数 方法 表达式 lambda

14.1.1 lambda表达式简介

1.lambda表达式用来表示匿名函数,也就是没有函数名字的函数。流处理是Java程序中一种重要的数据处理手动,它用少量的代码便可以执行复杂的数据过滤、映射、查找和收集等功能。

2.lambda表达式可以用非常少的代码实现抽象方法。lambda表达式不能独立执行,因此必须实现函数式接口,并且会返回一个函数式接口的对象。

lambda表达式的语法非常特殊,语法格式如下:

()->结果表达式   实现无参方法,单独写一对圆括号表示方法无参数,操作法右侧的结果表达式表示方法的返回值。

参数->结果表达式   实现只有一个参数的方法,参数可以写在圆括号里,或者不写圆括号。

(参数1,参数2,...,参数 n)->结果表达式  实现多参数的方法,所有参数按顺序写在圆括号里,且圆括号不可以省略。

lambda表达式也可以实现复杂方法,将操作符右侧的结果表达式换成代码块即可,语法格式如下:

 简单总结:操作符左侧是方法参数,操作符右侧是方法体。

 

14.1.2 lambda表达式实现函数式接口

1.函数式接口

函数式接口指的是仅包含一个抽象方法的接口,接口中的方法简单明了地说明了接口的用途,如线程接口Runnable、动作事件监听接口ActionListener等。开发者可以创建自定义的函数式接口如:

 

 

 如果接口中包含一个以上的抽象方法,则不符合函数式接口的规范,这样的接口不能用lambda表达式创建匿名对象。本章内容中所有被lambda表达式实现的接口均为函数式接口。

2.lambda表达式实现无参抽象方法

【例14.1】使用lambda表达式实现打招呼接口(实例位置:资源包\TM\sl\14\1)

3.lambda表达式实现有参抽象方法

抽象方法中有一个或多个参数的函数式接口也是很常见的,lambda表达式中可以用“(a1,a2,a3)”的方法表示有参抽象方法,圆括号里标识符对应抽象方法的参数。如果抽象方法中只有一个参数,lambda表达式则可以省略圆括号。

4.lambda表达式使用代码块

当函数式接口的抽象方法需要实现复杂逻辑而不是返回一个简单的表达式的话,就需要在lambda表达式中使用代码块。lambda表达式会自动判断返回值类型是否符合抽象方法的定义。

14.1.3 lambda表达式调用外部变量

lambda表达式除了可以调用定义好的参数,还可以调用表达式以外的变量。但是,这些外部的变量有些可以被更改,有些则不能。例如,lambda表达式无法更改局部变量的值,但是却可以更改外部类的成员变量(也可以叫作类属性)的值。

1.lambda表达式无法更改局部变量

局部变量在lambda表达式中默认被定义为final(静态)的,也就是说,lambda表达式只能调用局部变量,却不能改变其值。

【例14.4】使用lambda表达式修改局部变量

2.lambda表达式可以更改类成员变量

类成员变量是在lambda表达式中不是被final修饰的,所以lambda表达式可以改变其值。

【例14.5】使用lambda表达式修改类成员变量

14.1.4 lambda表达式与异常处理

很多接口的抽象方法为了保证程序的安全性,会在定义时就抛出异常。但是lambda表达式中并没有抛出异常的语法,这是因为lambda表达式会默认抛出抽象方法原有的异常,当此方法被调用时则需要进行异常处理。

【例14.6】使用lambda表达式实现防沉迷接口

 

标签:处理,接口,抽象,参数,方法,表达式,lambda
From: https://www.cnblogs.com/xiaozhou123456/p/17814415.html

相关文章

  • 前端处理大文件/视频分片上传,断点续传
    1、html部分,项目使用的是ant-design-vue组件库;spark-md5进行加密上传  2、使用变量:(通过上传成功的分片数与总分片数对比判断上传是否完成)  3、主要方法:1、查询当前文件是否上传  2、获取文件的MD5编码//获取文件的MD5编码computedSlice......
  • lighttools batchmode 批处理vb程序代码
    lighttools连接代码:1Privatem_ltServerAsLTAPI2345PublicFunctiongetLTAPIServer()AsLTAPI6Ifm_ltServerIsNothingThen7DimltAsIUnknown8DimltLocAsLocator9DimcmdAsString10SetltLoc=CreateObject("......
  • 持续集成任务与批处理脚本
    近期我在使用Jenkins进行嵌入式软件项目的持续集成[^持续集成]任务时,遇到了一些挑战。该项目是在Windows平台上开发的,因此我决定采用批处理脚本作为构建工具。本文将详细介绍我在解决相关问题时遇到的难点以及我的解决方案。希望能为大家提供一些参考和借鉴。问题背景待构......
  • 文本处理三剑客
    一:grep命令grep用于查找符合条件和满足的正则表达式语法格式:grep选项匹配的条件文本文件常用的选项-n对于匹配的内容显示行号-v反向选择(不要匹配到的内容)-r递归查找子目录中的文件中(符合条件的内容显示出来)-c只打印匹配的行数(符合条件的行数)-i......
  • windows环境charles过期处理方法
    首先进行reset删除原来的证书 输入mmc->文件>添加删除管理单元->找到相关证书进行删除  重复安装证书,手机再次下载安装新证书即可......
  • (Lora训练)(承接midjourney数据修改)(建对应名称txt与删txt内部后缀,括号,数字与转换下划线)Lo
    importosimportredefcreate_txt_from_image():#请求用户输入文件夹地址root_folder=input("请输入图片所在文件夹的完整路径:")#判断路径是否存在ifnotos.path.exists(root_folder):print("路径不存在,请检查输入的地址。")return#用......
  • 无涯教程-批处理 - CHKDSK函数
    此批处理命令检查磁盘是否有问题。CHKDSK-语法chkdskCHKDSK-示例@echooffchkdsk上面的命令开始检查当前磁盘是否有任何错误。参考链接https://www.learnfk.com/batch-script/batch-script-chkdsk.html......
  • Python 文件处理指南:打开、读取、写入、追加、创建和删除文件
    文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。文件处理在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。有四种不同的方法(模式)可以打开文件:"r"-读取-默认值。打开一个文件以进行读取,如果文......
  • Python 文件处理指南:打开、读取、写入、追加、创建和删除文件
    文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。文件处理在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。有四种不同的方法(模式)可以打开文件:"r"-读取-默认值。打开一个文件以进行读取,如果文......
  • 正则可视化在线工具-更直观地理解和调试正则表达式的利器
    在工作和学习中,正则表达式是一种强大的工具,用于处理和分析文本数据。它可以帮助我们在海量数据中快速搜索、匹配和提取所需的信息。然而,正则表达式的语法复杂,很多人在编写和调试时可能会遇到困难。为了解决这个问题,我决定自己编写一个正则工具。这个工具旨在提供一个直观且用户友......