- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;第26章Lambda表达式;函数式接口
函数式接口可以被隐式转换为Lambda表达式,函数式接口有如下几个特征:
? 接口中只能有一个接口方法,可以有多个非抽象方法;
? 可以有静态方法和默认方法;
? 可以使用@FunctionalInterface标记;
? 默认方法可以被覆写。;方法引用
方法引用可以使开发者直接引用构造方法、静态方法、实例方法或实例对象。方法引用和Lambda表达式配合使用,可以让代码看起来更加简洁,没有很多复杂的模板代码。;Stream概述
Stream是一个来自数据源的元素队列,支持聚合操作,允许以声明的方式处理数据集合。StreamAPI把真正的函数式编程风格引入Java中。Stream将要处理的元素集合看成一种流,元素是特定类型的对象,形成一个队列。在处理流的过程中,借助StreamAPI对Stream中的元素进行操作,如筛选、排序、聚合等。
Stream包含数据源和聚合操作两个部分。
(1)数据源:流的来源,可以是集合、数组、I/Ochannel、产生器(generator)等。
(2)聚合操作:类似SQL语句的操作,如filter、map、reduce、find、match、sorted等。
对Stream的操作分为两种。
(1)中间操作:每次返回一个新的流,可以有多个。
(2)终端操作:每个流只能进行一次终端操作,终端操作可视为关闭流的操作,操作结束后流无法再次使用。终端操作会产生一个新的集合或值。
Stream的特性如下。
(1)集合侧重的是数据,流侧重的则是计算。Stream不存储数据,而是按需计算,按照特定的规则对数据进行计算,一般会输出结果。
(2)Stream不会改变数据源,会返回一个持有结果的新Stream。
(3)Stream具有延迟执行特性,只有调用终端操作时,中间操作才会执行。
(4)以前对集合进行遍历都是通过迭代器Iterator或for循环的方式,显式地在集合外部进行迭代,称为外部迭代。Stream提供了内部迭代的方式,通过访问者模式(Visitor)实现。
流的使用可以总结为如下内容。
(1)一个数据源(集合等)执行一个查询。
(2)一个中间操作链形成一条流的流水线。
(3)一个终端操作执行流水线,并生成结果。;创建Stream
Stream可以通过集合、数组等来创建。
通过集合创建流
2.通过数组创建流
3.通过Stream静态方法of()、iterate()、generate()创建流
Stream的中间操作
多个中间操作可以连接起来形成一个流水线,中间操作不会执行任何的处理,直到流水线上触发终端操作,并且在终端操作时一次性全部处理,因此该过程称为“惰性求值”。
常用的StreamAPI如下。
1.筛选与切片
2.映射
3.排序
Stream的终端操作
终端操作会从流的流水线中生成结果,该结果可以是任何不是流的值,如List、Integer、void等。一个常见的数据处理方式就是查看数据集中的某些元素是否匹配一个给定的属性。StreamAPI通过一系列方法提供了便利的实现途径。
1.查找与匹配
2.归约
3.收集;串行流与并行流
串行流:stream,由主线程按顺序对流执行操作。
并行流:parallelStream,将一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。前提是流中的数据处理没有顺序要求。;Optional类入门
Optional类是一个可以为null的容器对象,它可以保存类型为T的值,或者仅仅保存null。Optional提供很多有用的方法,这样就不用显式进行空值检测。如果值存在,则isPresent()方法会返回true,调用get()方法会返回该对象。Optional类的引入很好地解决了空指针异常问题。;创建Optional对象;获取Optional中的值
获取Optional中的值的方法有以下两种。
使用map从Optional对象中提取和转换值
从对象中提取信息是一种常见的模式。在没有使用Optional时,需要先检查对象是否为null,再调用获取方法。否则会报空指针异常。
2.使用flatMap链接Optional对象
如果需要获取多级嵌套对象中最里层对象的属性,如获取班级中某个学生的学科成绩,在没有使用Optional时,需要多个if语句检查对象是否为空。;更新的日期和时间API概述
Java曾三次引入处理时间的API,JDK1.0版本对日期和时间的支持只能依赖java.util.Date类,这个类如类名所表达的,无法表示日期,只能以毫秒的精度表示时间,且其易用性很差。Date类的大多数方法在Java1.1版本引入java.util.Calendar类之后被弃用。但是Cale
您可能关注的文档
- 办公软件应用(Office 2010)(第2版) 课件 -Excel 2010篇.pptx
- 办公软件应用(Office 2010)(第2版) 课件 -Power Point 2010篇.pptx
- 办公软件应用(Office 2010)(第2版) 课件 -Word 2010篇.pptx
- Java程序设计(第3版) 课件 -第二部分 类之间的关系.pptx
- Java程序设计(第3版) 课件 第七部分 编 程 实 战.pptx
- Java程序设计(第3版) 课件 -第三部分 异常处理.pptx
- Java程序设计(第3版) 课件 -第四部分 核心API的使用.pptx
- Java程序设计(第3版) 课件 -第五部分 特性总结.pptx
- Java程序设计(第3版) 课件 -第一部分 Java语言的类.pptx
- 2024年河南省新乡市小升初数学常考应用题摸底二卷(含答案及精讲).pdf
文档评论(0)