JAVALambda表达式、函数式接口、Stream API

1. Lambda表达式

1.1 介绍

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

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

还有叫箭头函数的...

语法特点

                

可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。

                

可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。

                

可选的大括号:如果主体包含了一个语句,就不需要使用大括号。

                

可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值

     如果只有一条语句,并且是返回值语句,就可以不写return 不写 {} 

              如果写上{}  就必须写return 和 ;

       如果有 多条语句,必须写{}  return 和 ;  也必须写。

函数式接口:

概念说明

Lambda表达式的另外一种表现形式,提高方法复用率和灵活性。

         

特点:

更简单、代码量更少、复用性、扩展性更高。

         

 应用场景:

                

若Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用。

                

不需要再复写已有API的Lambda的实现。

Stream API:

概念说明

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

               

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

               

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

        

4.2 特点

               

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

               

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

               

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

               

不支持索引访问。

               

延迟计算

               

支持并行

               

很容易生成数据或集合

               

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

常用动作算子:

循环 forEach

        

计算 min、max、count、average

        

匹配 anyMatch、allMatch、noneMatch、findFirst、findAny

汇聚 reduce

        

收集器 collect

 常用转换算子

  常用转换算子 filter,distinct,map,limit,skip,flatMap等

 

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

           

  distinct : 去掉重复的元素

 

  skip : 跳过多少元素

 

  limit : 取一个集合的前几条数据

 

  map :

            可以理解是在遍历集合的过程中,对元素进行操作,比如判断集合元素是否是a 返回boolean

            因为 map的返回值,就是新集合中的元素,所以也可以在遍历的时候对集合的数据进行更改,比如都加 --

           

  flatMap : 解决一个字符串数组  返回单一的字符串使用flatMap

本来集合中有两个数组,可以通过flatMap 把数组中的每一个元素都放到集合中,然后把数组去掉

 

  注意只用此算子是不会真正进行计算的,只有后边调用动作算子才会真正计算。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值