【无标题】

系列文章目录

优极限学习day21

一、匿名内部类

内部类的一个种
内部类为类中定义类
类的组成 : 类名 继承实现体系 类体

注意 : 匿名内部类省略了类名,所以只能在当前定义内名内部类的时候使用一次这个子类|实现类,后续无法

使用 : 定义匿名内部类+创建对象
new 接口|抽象类(){ --> 实现类|子类的类体(匿名内部类类体)
}
说明 : new 这个接口|抽象类的子类|实现类的对象,实现类或子类就是匿名内部类

二、Lambda表达式

简化匿名内部类对象,定义函数式接口的实现类对象
jdk1.8新增,前提 : 函数式接口
如果引用类型|形参类型为函数式接口类型,赋值可以使用lambda的方式简化

满足lambda使用要求 : 可以通过lambda表达式简化 :
1)创建实现类对象+定义实现类类体
2)调用功能
函数式接口作为形参–> lambda表达式作为实参

分析使用哪一种函数式接口作为形参 : 只关注函数式接口中唯一一个抽象方法的参数列表与返回值的类型与个数,与当前要实现的行为是否匹配满足

四大内置函数式接口:
消费型接口 Consumer
void accept(T t)
函数型接口 Function<T,R>
R apply(T t)
供给型接口 Supplier
T get()
段言型接口 Predicate
boolean test(T t)

方法引用:
1.lambda体是否是通过调用另外一个方法实现的
2.内部所引用的方法的参数列表与返回值要求与lambda表达式的参数列表与返回值保持一致,一一对应
3.内部所引用方法的返回值要求对应lambda的返回值,lambda参数列表的第一个参数作为内部调用方法的对象存在,lambda参数列表的第二个参数往后,就够一一对应内部所引用方法的参数列表

语法:
方法引用–>::
对象::成员方法

    1)lambda体是否是通过调用另外一个方法实现的  
    2)内部所引用的方法的参数列表与返回值要求与lambda表达式的参数列表与返回值保持一致,一一对应  
      
    类名::静态方法
   1 )lambda体是否是通过调用另外一个方法实现的 
     2)内部所引用的方法的参数列表与返回值要求与lambda表达式的参数列表与返回值保持一致,一一对应  
    类名::成员方法
   1)lambda体是否是通过调用另外一个方法实现的 
   2)内部所引用方法的返回值要求对应lambda的返回值,lambda参数列表的第一个参数作为内部调用方法的对象存在,lambda参数列表的第二个参数往后,就够一一对应内部所引用方法的参数列表

三Stream流

是数据渠道,用户操作数据源(数组,集合)所有产生的元素序列

1.Stream流本身自己不会存储数据的
2.Stream不会改变数据源,每次操作都会返回一个持有结果的新的Stream
3.流是一次性的流,不能一个流反复多次使用
4.延迟执行|惰性加载 :等到获取终止行为,所有的中间操作会一起执行,否则延迟执行

步骤 :
1.获取Stream
2.中间操作 : 返回新的stream
3.终止结果(返回的结果不是stream)

过滤 : Stream filter(Predicate<? super T> predicate) 把stream操作的每一个数据,应用参数函数,根据函数的返回值决定是否保留在返回的新的stream中
截取 : limit(n) 使其元素不超过n个
跳过 : skip(n) 跳过前n个元素
去重 : distinct() hashCode()与equals()判断去重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值