为什么使用Lambda表达式
Lambda是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁,更灵活的代码
匿名内部类和Lambda表达式
在匿名内部类中,其实有用的代码也是我们需要的代码其实就只有一句,其他的代码都是为了写那一句而写,所以在Java8的新特性中,出现了Lambda表达式,一句代码就可以实现,避免写多余代码,使我们的代码更简洁
Lambda表达式的基础语法
java8中引入了一个一个新的操作符"->",该操作符称为箭头操作符或者Lambda操作符,Lambda操作符将Lambda表达式拆分成为左右两部分
左侧:Lambda表达式的参数列表
右侧:Lambda表达式中所需执行的功能,即Lambda体
语法格式
一、无参数,无返回值

在java中正好Runnable接口中的run方法无参,无返回值

运行结果

二、一个参数,无返回值。

若参数只有一个那么箭头操作符左边的参数列表不用写小括号

运行结果

三、有多个参数,有返回值,Lambda体中有多条语句

Lambda体中若有多条语句,则需要用大括号括起来
四、有多个参数,有返回值,Lambda体中只有一条return语句,那么大括号和return都可以不写

Lambda体则表示了返回的数据
五、Lambda参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出数据类型,即”类型推断“
Lambda表达式需要函数式接口的支持
函数式接口:接口中只有一个方法的接口。可以用注解@FunctionalInterface 修饰,因为这个注解修饰的接口必须是函数式接口
四大内置核心函数型接口
Consumer : 消费型接口
accept(T t);
传入一个T

Supplier : 供给型接口
T get();
返回一个T

创建十个0-100的数字放入集合中
运行结果

Function<T,R> :函数型接口
R apply(T t);
传入一个T,返回一个R

运行结果

Predicate :断言型接口
boolean test<T t>;
传入一个T,返回一个布尔值


运行结果

其他接口

Stream流API的简单使用
用流来进行循环打印

用流去重后再进行循环打印

去重后 返回一个新的newList 再进行打印

直接打印list中有多少个元素

创建新的Stream,通过Stream来创建

把数组转换成Stream 然后调用过滤方法 再给预测参数(自动预测类型) 最后过滤计数

映射

组合

join

本文详细介绍了Java 8中的Lambda表达式及其基础语法,包括不同情况下的使用方法,并探讨了Lambda表达式如何简化代码。同时,文章还介绍了四种核心函数式接口:Consumer、Supplier、Function和Predicate的应用场景。
896





