Day26 Lambda表达式、函数式接口

Lambda

Lambda表达式是一种没有名字的函数,也可称为闭包,是Java 8 发布的最重要新特性。本质上是一段匿名内部类,也可以是一段可以传递的代码。还有叫箭头函数的...

优点:使代码更加简洁

和匿名内部类对比

 

 语法结构

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

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

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

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

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

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

 

 

 函数式接口

英文称为Functional Interface,其本质是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。核心目标是为了给Lambda表达式的使用提供更好的支持,进一步达到函数式编程的目标,可通过运用函数式编程极大地提高编程效率。其可以被隐式转换为 lambda 表达式。

特点

函数式接口是仅制定一个抽象方法的接口,可以包含一个或多个静态或默认方法,专用注解即@FunctionalInterface 检查它是否是一个函数式接口,也可不添加该注解.如果有两个或以上 抽象方法,就不能当成函数式接口去使用,也不能添加@FunctionalInterface这个注解.如果只有一个抽象方法,那么@FunctionalInterface注解 加不加 都可以当做函数式接口去使用

自定义

 

 JDK自带的函数式接口

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

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

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

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

方法、构造器、数组

Lambda表达式的另外一种形式

方法引用

对象引用::成员方法名

 类名::静态方法名

 类名::成员方法名

 构造器引用

 数组引用

 Stream API

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

集合讲的是数据,流讲的是计算.即一组用来处理数组,集合的API。

特点

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

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

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

不支持索引访问。

延迟计算

支持并行

很容易生成数据或集合

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

应用场景

流式计算处理,需要延迟计算、更方便的并行计算;更灵活、简洁的集合处理方式场景

创建流的五种方式

 转换算子

转换算子,又称中间操作,所有的转换算子得到的都是一个新的流,所以一般用于链式调用

常用的转换算子

limit:趣鸡盒中的前几条数据

filter:对元素进行过滤筛选,不符合条件的就不要了

distinct:去除重复

skip:跳过

map:更改数据

sorted:排序

注意:只有转换算子是不执行的,不许有相应的动作才会真的执行

常用方法

 

 

 动作算子

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值