• 学习的思维方法:1.“大处着眼,小处着处” 2.”逆向思维,反证法“,”透过问题看本质“。
  • 新特性的特点:

    • 速度快
    • 代码更少,增加了Lamba表达式
    • 强大的Stream API
    • 便于并行
    • 最大化减少空指针
    • Nashorm引擎,允许在JVM上运行JS应用

      Lambda表达式

  • 为什么要有Lambda表达式

image.png
image.png
image.png
image.png

语法格式1:无参 ,无返回值

image.png
语法格式2:Lambda 需要一个参数,但是没有返回值
image.png

  • 语法格式3:数据类型可以省略,因为可由编译器推断得出,称为类型推断

image.png
语法格式4:Lambda若只需要一个参数时,参数的小括号可以省略。
image.png
语法方式5:Lambda需要两个或以上的参数,多执行语句,并且可以有返回值
image.png
语法格式6:当Lambda体只有一条执行语句时,return与大括号若有,都可以省略。
image.png
总结:
->左边:lambda形参列表的参数类型可以省略(类型推断),如果lambda形参列表只有一个参数其中一对()也可以省略
->右边:lambda体应该使用一对{}包裹:如果lambda体只有一条执行语句
(可能是return语句),可以省略这一对{}和return关键字

函数式接口

什么是函数式接口

  • 如果一个接口中,只声明一个抽象方法,则此接口就称为函数式接口

image.png
image.png
image.png

  • java内置四大核心函数式接口

image.png
例子:
image.png

方法引用/构造引用

  • 使用:

image.png
例子:
image.png

Stram API

Stream关注的是对数据的运算,与CPU打交道
  • 集合关注的是数据的存储,与内存打交道

    2:
  • Stream自己不会存储对象

  • Stream不会改变源对象,相反,他们会返回一个特有的结果的新Stream
  • Stream操作时延迟执行的。这就意味着他们会等到需要结果的时候执行

    3.Stream执行流程
  • Stream的实例化

  • 一系列的中间操作(过滤,映射,、、、)
  • 终止操作

    说明:

    一个中间操作链,对数据源的数据进行过处理
    一旦执行终止操作,就执行中间操作链,并产生结果,
    之后,不会再被使用

    Stream的实例化
  • 通过集合

image.png
通过数组
image.png
通过Stream的of()
image.png
创建无线流
image.png

Stream 的中间操作
  • 筛选和切片

image.png

筛选与切片

image.png

映射

image.png

Stream的终止操作

image.png
归约
image.png
收集
image.png
映射
image.png
例子:
image.png
排序
image.png
image.png
image.png

Optional类

image.png