javaSE基础学习笔记 day22 JDK 8.0新特性 Lambda表达式 方法引用 Stream API

Lambda 表达式

  1. 格式:
    -> :Lambda 操作符
    左边:Lambda 形参列表(就是接口中抽象方法的形参列表)
    右边:Lambda 体(就是重写抽象方法的方法体)
  2. 具体使用总结
    ① 左边:参数类型可以省略(类型推断),如果左边只有一个参数,则“()”可以省略。
    ② 右边:使用“{}”包住方法体,如果只有一条语句(可能是 return ),可以省略“{}”(和return)
  3. 本质:Lambda 表达式作为函数式接口的实例。

如果一个接口内只定义了一个抽象方法,那么就是函数式接口。

函数式接口

四大核心函数式接口

  1. Consumer< T >消费型接口:对类型为T的对象应用操作,包含方法:void accept(T t)
  2. Supplier< T >供给型接口:返回类型为T的对象,包含方法:T get()
  3. Function<T, R>函数型接口:对类型为T的对象应用操作,并返回结果。结果是R类型的对象。包含方法:R apply(T t)
  4. Predicate< T >断定型接口:确定类型为T的对象是否满足某约束,并返回 boolean 值。包含方法:boolean test(T t)

方法引用

简介:当要传递给 Lambda 体的操作,已经有实现的方法 了,可以使用方法引用。

三种格式:

  1. 对象 :: 非静态方法
  2. 类 :: 非静态方法
  3. 类 :: 静态方法

Stream API

  1. Stream 关注的式对数据的运算,与 CPU 打交道。
  2. ①Stream 自己不会存储元素。
    ②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
    ③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。
  3. Stream的执行流程
    ① Stream 的实例化
    ② 一些列中间操作(过滤,映射…)
    ③ 执行终止操作

注意:一个中间操作链,对数据源的数据进行处理,一旦执行终止操作,就执行中间操作链并返回结果,之后不能再被使用。

创建 Stream 的方式

  1. 通过集合
    ① default Stream< E > stream() : 返回一个顺序流
    ② default Stream< E > parallelStream() : 返回一个并行流
  2. 通过数组
    ① Stream< T > stream(T[] array):Arrays 的静态方法 stream() 可以获取数组流
  3. 通过 Stream 的 of
    public static< T > Stream< T > of(T… values) :调用Stream类静态方法 of(), 通过显示值创建一个流。

Stream 的中间操作

  1. filter(Predicate p) :接收 Lambda , 从流中排除某些元素
  2. distinct() :筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
  3. limit(long maxSize): 截断流,使其元素不超过给定数量
  4. skip(long n):跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一
    个空流。与 limit(n) 互补
  5. map(Function f):接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
  6. sorted() :产生一个新流,其中按自然顺序排序
  7. sorted(Comparator com) :产生一个新流,其中按比较器顺序排序

Stream 的终止操作

  1. forEach(Consumer c):内部迭代(使用 Collection 接口需要用户去做迭代,称为外部迭代。相反,Stream API 使用内部迭代——它帮你把迭代做了)
  2. allMatch(Predicate p) :检查是否匹配所有元素
  3. max(Comparator c) :返回流中最大值
    min(Comparator c) :返回流中最小值
  4. reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 T
    reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 Optional< T >
  5. collect(Collector c)将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值