Day26 Lambda表达式、函数式接口

1. Lambda

1.1 概述

Lambda表达式是一种没有名字的函数,也可称为闭包,是Java 8 发布的最重要新特性。

本质上是一段匿名内部类,也可以是一段可以传递的代码。

还有叫箭头函数的

1.2 优点

是匿名内部类的简写方式,使代码更加简洁

1.3 和匿名内部类对比

 

1.4 语法结构 

(参数,参数,参数...)->{方法体}

1 无参和多参,小括号必须写

2 只有一个参数的时候,小括号可以不写

3 如果只有一条语句,大括号也可以不写,并且语句结尾不需要 分号

4 如果只有一条语句,并且也是返回值语句的话,return 也要省略

5 如果是多条语句,必须加{},就是正常编码,改写分号写分号,改写return就写retur

1.5 案例

2 函数式接口

2.1 概述 

英文称为Functional Interface

                   

其本质是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

                   

核心目标是为了给Lambda表达式的使用提供更好的支持,进一步达到函数式编程的目标,可通过运用函数式编程极大地提高编程效率。

                   

其可以被隐式转换为 lambda 表达式。

2.2 特点

函数式接口是仅制定一个抽象方法的接口

                   

可以包含一个或多个静态或默认方法

                 

 

专用注解即@FunctionalInterface 检查它是否是一个函数式接口,也可不添加该注解

如果有两个或以上 抽象方法,就不能当成函数式接口去使用,也不能添加@FunctionalInterface这个注解

如果只有一个抽象方法,那么@FunctionalInterface注解 加不加 都可以当做函数式接口去使用

2.3 自定义

2.4 JDK 子代的函数式接口 

Supplier : 表示供应商,有个get方法,无参,有返回值,一般用于获取数据

Consumer : 表示消费者,accept,有参,无返回值

Function ,函数操作, apply , 有参也有返回值

Predicate 断言,用于做判断校验操作,test,需要传入参数并返回boolean类型

3 方法、构造器、数组

3.1 概述

Lambda 表达式的另外一种形式

3.2 方法引用

3.3 构造器引用 

3.4 数组引用 

4 Stream API 

4.1 概述

数据渠道、管道,用于操作数据源(集合、数组等)所生成的元素序列。

集合讲的是数据,流讲的是计算

即一组用来处理数组,集合的API。

4.2 特点

Stream 不是数据结构,没有内部存储,自己不会存储元素

Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。                  

Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。                   

不支持索引访问。                   

延迟计算                   

支持并行                   

很容易生成数据或集合               

支持过滤,查找,转换,汇总,聚合等操作。

 4.4 创建流的五种方式

4.5 转换算子 

4.5.1 概述

4.5.2 常用方法

 

4.6 动作算子

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值