java8新特性学习之函数式接口与Stream流思想

一、使用匿名内部类的匿名对象创建线程和Lambda表达式写法

 

Lambda表达式写法不用去定义一个Runable接口的实现类;

二、方法入参是一个接口或者接口的实现类

 

三、对某个类的一些对象实例进行排序

其中,数组创建时候使用的是静态初始化,里面存放的对象是匿名对象;

Lambda表达式写法:

 

四、计算两数和,方法的入参是一个接口

 

五、Lambda表达式写法上下文可推导可省略

 入参列表有且只有一个;参数列表的括号可以省略(参数列表中参数的类型所有情况下都可以省略)

方法体只有一行代码:方法体花括号、一行代码后面的结束分号和return,这三必须一起省略;

 

一、函数式接口

有且仅有一个抽象方法;

 2、匿名内部类也会产生class文件,类加载时候就要消耗jvm资源,lambda表达式不会,所以效率高;

3、性能浪费的日志案例

 

 

 使用lambda表达式优化

 

 方法的参数列表第二个参数是一个函数式接口,只含有一个抽象方法;

 

 

 

 4、runnable接口实例:函数式接口,只有一个run方法;

 

 

 

 有且仅有一个参数时候,参数括号可以省略;方法体只有一行代码,花括号和分号和return要一起省略;

5、函数式接口作为方法的返回值

排序,comparator接口,函数式接口,只含有一个compare抽象方法;后面 - 前面,则是降序;

 

 调用:

 

 Arrarys是数组的工具类,

 

 降序,大的在前面;

6、util.function包下的常用函数式接口:supplier接口

 

 使用supplier求数组中最大值

 

 

 

 7、Comsumer接口

 

 

 

 字符串缓冲区可以反转字符串内容:;

 

 Comsumer函数式接口的默认方法 default andThen():

 

 

 

 8、Comsumer消费数据接口练习:

写处理方法供调用:

 

调用方法:传入的是lambda表达式,代替接口的匿名对象或者实现类的方式,方法体中就是重写函数式接口那个唯一的抽象方法的方法体:

 

 9、Predicate接口的唯一抽象方法Test方法,boolean判断:

 

 值是一个boolean值;

 

 9.2、Predicate接口的默认方法:and用法:

 

 9.3、默认方法or方法;

9.4、Predicate函数式接口取反用法:唯一抽象方法是negate():

 10、Function函数式接口,转换数据类型:

 

定义后的调用:

 

 

 11、Function接口综合用法:

 

 

Stream流思想:

一、IO流用于读写;Stream流用于处理数组和集合数据;

1、传统集合遍历:

 

 2、使用Stream流的方式过滤:

 

其中,链式编程(返回值就是对象自己)中,filter使用的是Predicate函数式接口,它的唯一抽象方法是Test()布尔判断:

 

 

遍历方法forEach()使用的是数据消费Comsumer函数式接口唯一抽象方法是accept()方法,方法体中(lambda表达式)就是对入参数据经行处理使用就行::

 

 2、Stream流的思想: 是个生产线,只处理获取的数据源数据,不存储数据:

 

 其中,map步骤,映射可以改变集合元素的数据类型;

二、获取集合的两种方法

 

1、Collection集合的List和Set单列集合: 

 

 其中,String的底层就是一个字节数组;

2、Map双列集合集合:

 

 3、Stream类的静态方法of()获取:

 

 三、Stream流的常用方法:

 

 

 其中,前面延迟方法是处理集合数据,最后终结方法是真正的改变数据元素;

 1、终结方法for each

 

 2、延迟方法 filter

 

 

 

 3、Stream是管道流,只能被消费(使用)一次;

 

 异常:

 

 4、延迟方法map方法,使用的是函数式接口function接口,的apply唯一抽象方法:

function接口的唯一抽象方法apply:

 

 

 

 5、终结方法count()

 

 6、延迟方法limit:

 

 

 

 7、延迟方法skip:

 

 

 

 8、Stream类的静态方法concat() , 合并流

 

 9、集合元素处理实例

9.1传统集合方式处理:

从两个集合中选几个String类型的name 满足条件的元素到新集合中并创建person对象:

 

 其中,addAll是把一个集合的元素都添加到当前集合对象中;

9.2Stream流的方式

 

 其中,Stream类静态方法concat(stream1, stream2),map方法映射,将集合中元素数据类型转换,String应用类型转换成Person引用类型,使用forEach() 遍历处理终结;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值