Java8新特性

1.Lambda表达式

>语法

左侧: 指定了Lambda表达式需要的参数列表

右侧: 制定了Lambda体,是抽象方法的实现逻辑,即Lambda表达式要执行的功能

>语法格式

1)无参,无返回值

2)需要一个参数,但没有返回值

3)数据类型可以省略

4)Lambda若只需要传入一个参数时,参数的小括号可以省略

5)Lambda若需要传入两个或以上的参数,多条执行语句,并且可以有返回值

6)但Lambda体只有一条语句时,return与大括号若有,都可以省略

2.函数式接口

>什么是函数式接口?

  • 只包含一个抽象方法(Single Abstract Method,简称 SAM)的接口,称为函数式接
口。当然该接口可以包含其他非抽象方法。
• 你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受
检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明)。
我们可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是
否是一个函数式接口。同时 javadoc 也会包含一条声明,说明这个接口是一个函数
式接口。
• 在 java.util.function 包下定义了 Java 8 的丰富的函数式接口  

>如何理解函数式接口?

• 面向对象的思想:
做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。
• 函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重
视过程。
• 在函数式编程语言当中,函数被当做一等公民对待。在将函数作为一等公民的编程语
言中,Lambda 表达式的类型是函数。但是在 Java8 中,有所不同。在 Java8 中,
Lambda 表达式是对象,而不是函数,它们必须依附于一类特别的对象类型——函数
式接口。
• 简单的说,在 Java8 中,Lambda 表达式就是一个函数式接口的实例。这就是 Lambda
表达式和函数式接口的关系。也就是说,只要一个对象是函数式接口的实例,那么该
对象就可以用 Lambda 表达式来表示。

>举例

>四大核心函数式接口

1)消费型接口  Consumer<T>  对类型为T的对象应用操作,包含方法: void accept(T t)

消费型接口的特点: 有形参,但是返回值类型是void

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)

判断型接口的特点: 有参,但是返回值类型是boolean型

3.Stream API

>说明

• Stream API ( java.util.stream) 把真正的函数式编程风格引入到 Java 中。这是目前为止
对 Java 类库 最好的补充 ,因为 Stream API 可以极大提供 Java 程序员的生产力,让程
序员写出高效率、干净、简洁的代码。
• Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操
作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用 Stream API 对集合
数据进行操作,就类似于使用 SQL 执行的数据库查询。 也可以使用 Stream API 来
并行执行操作。简言之,Stream API 提供了一种高效且易于使用的处理数据的方式。

>Stream操作的三个步骤

1)创建Stream

一个数据源(如集合,数组),获取一个流

2)中间操作

每次处理都会返回一个持有结果的新Stream,即中间操作的方法返回值仍然是Stream类型的对象,因此中间操作可以是一个操作链,可以对数据源的数据进行n次处理,但是在终止操作前,并不会真正执行

3)终止操作

终止操作的方法返回值就不再是Stream了,因此一旦执行终止操作,就结束真个Stream操作了,一旦执行终止操作,就执行中间操作链,最终产生结果并结束Stream

>一系列中间操作

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值