整体介绍
◆实例讲解Lambda语法
◆基于Lambda实现函数式编程
◆Stream流式处理
什么是Lambda表达式
◆JDK8(SDK 1.8)开始支持Lambda表达式,用来让程序编写更优雅
◆利用Lambda可以更简洁的实现匿名内部类与函数声明与调用
◆基于Lambda提供streami流式处理极大简化对集合的操作
传统代码
使用Lambda表达式
Lambda语法格式
新建四则运算接口,MathOperation.java
实现接口,新建LambdaSample.java文件
注意:约束条件:Lambda表达式只能实现有且只有一个抽象方法的接口,Java称为”函数式接口”
因为lambda不知道该实现哪个抽象方法
函数式编程
基于Lambda的一种全新开发方式
什么是函数式编程
◆函数式编程是基于函数式接口并使用lambda表达的编程方式
◆函数式编程理念是将代码作为可重用数据代入到程序运行中
◆函数式编程强调”你想做什么”,而不是”你想怎么做’
什么是函数式接口
◆函数式接口是有且只有一个抽象方法的接口
◆Java中拥有大量函数式接口,如java.lang.Runnable
◆JDK8后提供了一系列新的函数式接口,位于java.util.function
函数式接口Predicate
◆Predicate是新增的函数式接口,位于java.util.function
◆Predicate用于测试传入的数据是否满足判断要求
◆Predicate接口需要实现test()方法进行逻辑判断,返回true或false
注意Filter函数的第二个参数类型,是predicate接口Predicate<Integer> predicate
其它函数式接口
java.util.function (Java Platform SE 8 ) (oracle.com)
Consumer使用
Function<T,R>使用
随机生成32位长度的字符串,常用于安全领域的加密与解密
总结
Stream介绍
Stream流式处理
◆Stream流式处理是建立在Lambda基础上的多数据处理技术
◆Stream对集合数据处理进行高度抽象极大简化代码量
◆Stream可对集合进行迭代,去重,筛选,排序,聚合等一系列处理
Stream实例
流水线式加工代码,第一步筛选偶数,第二步大到小排序,最后找出最大的数
Stream常用方法
Stream的五种创建方式
stream.of()方法解析生成对应的Stream对象,需要指定泛型类型,此处为String类型
按住ctrl,点击forEach,即可看到内部的实现为Coustom
void forEach(Consumer<? super T> var1);
此处s类型由泛型类型可知是String
Stream常用方法
Stream (Java Platform SE 8 ) (oracle.com)