Java8中Lambda表达式如何实现函数式接口和Stream操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计909个文字,预计阅读时间需要4分钟。
%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%8F%AF%E8%BE%BE%E5%BC%8F%E5%9F%BA%E7%A1%80%E3%80%82Lambda%E6%98%AF%E5%8F%AF%E8%BE%BE%E5%BC%8F%E5%9F%BA%E7%A1%80%E3%80%82%E5%8F%AF%E8%BE%BE%E5%BC%8F%E6%98%AF%E4%B8%80%E7%A7%8D%E9%AB%98%E6%95%88%E5%92%8C%E6%98%93%E4%BD%BF%E7%94%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E6%96%B9%E5%BC%8F%E3%80%82%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3%E6%98%AF%E4%B8%80%E4%B8%AA%E5%8F%AA%E5%8F%AF%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E6%8A%BD%E8%B1%A1%E6%96%B9%E6%B3%95%E7%9A%84%E6%8E%A5%E5%8F%A3%E3%80%82
函数式接口 是 Lambda 的基础。 Lambda 是 Stream API 的基础。 Stream API 是一种高效且易于使用的处理数据的方式。函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
java.util.function 它包含了很多接口,用来支持 Java的函数式编程。
该包下有四大类函数式接口:Supplier、Consumer、Predicate、Funcation。
Supplier(供给型):无参,有返回值(泛型对象)。
Consumer(消费型):有参(泛型对象),无返回值。
Predicate(断言型):有参(泛型对象),有返回值(布尔)。
Funcation(方法型):有参(泛型对象),有返回值(泛型对象)。
函数的具体实现则由调用者来实现,这就是函数式接口的意义所在。
------------------------------------------------------------------------------------------
Lambda表达式来表示函数式接口的一个实现。(注:JAVA 8 之前一般是用匿名类实现的)
Lambda表达式的重要特征:
(1)可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
(2)可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
(3)可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
(4)可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
------------------------------------------------------------------------------------------
函数式接口 是Lambda 的基础。
Lambda是 Stream API 的基础。
Stream API 是一种高效且易于使用的处理数据的方式。
使用 Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询
我们很少去定义一个方法,方法参数包含函数接口。
我们更重要的是学会使用 JDk8 中带有函数式接口参数的方法,来简化我们的代码。
------------------------------------------------------------------------------------------
参考:
Java 8 函数式接口
www.runoob.com/java/java8-functional-interfaces.html
my.oschina.net/mdxlcj/blog/4819554
mp.weixin.qq.com/s/JGI9eAgjus-XoY-40z7DkQ
Java Lambda 表达式
www.runoob.com/java/java8-lambda-expressions.html
玩转Java8 Stream
mp.weixin.qq.com/s/477FjfZOp2_gY48kRav1fg
JDK8 新特性详解
my.oschina.net/mdxlcj/blog/1622718
my.oschina.net/mdxlcj?tab=newest&catalogId=6361172
本文共计909个文字,预计阅读时间需要4分钟。
%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%8F%AF%E8%BE%BE%E5%BC%8F%E5%9F%BA%E7%A1%80%E3%80%82Lambda%E6%98%AF%E5%8F%AF%E8%BE%BE%E5%BC%8F%E5%9F%BA%E7%A1%80%E3%80%82%E5%8F%AF%E8%BE%BE%E5%BC%8F%E6%98%AF%E4%B8%80%E7%A7%8D%E9%AB%98%E6%95%88%E5%92%8C%E6%98%93%E4%BD%BF%E7%94%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E6%96%B9%E5%BC%8F%E3%80%82%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3%E6%98%AF%E4%B8%80%E4%B8%AA%E5%8F%AA%E5%8F%AF%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E6%8A%BD%E8%B1%A1%E6%96%B9%E6%B3%95%E7%9A%84%E6%8E%A5%E5%8F%A3%E3%80%82
函数式接口 是 Lambda 的基础。 Lambda 是 Stream API 的基础。 Stream API 是一种高效且易于使用的处理数据的方式。函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
java.util.function 它包含了很多接口,用来支持 Java的函数式编程。
该包下有四大类函数式接口:Supplier、Consumer、Predicate、Funcation。
Supplier(供给型):无参,有返回值(泛型对象)。
Consumer(消费型):有参(泛型对象),无返回值。
Predicate(断言型):有参(泛型对象),有返回值(布尔)。
Funcation(方法型):有参(泛型对象),有返回值(泛型对象)。
函数的具体实现则由调用者来实现,这就是函数式接口的意义所在。
------------------------------------------------------------------------------------------
Lambda表达式来表示函数式接口的一个实现。(注:JAVA 8 之前一般是用匿名类实现的)
Lambda表达式的重要特征:
(1)可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
(2)可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
(3)可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
(4)可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
------------------------------------------------------------------------------------------
函数式接口 是Lambda 的基础。
Lambda是 Stream API 的基础。
Stream API 是一种高效且易于使用的处理数据的方式。
使用 Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询
我们很少去定义一个方法,方法参数包含函数接口。
我们更重要的是学会使用 JDk8 中带有函数式接口参数的方法,来简化我们的代码。
------------------------------------------------------------------------------------------
参考:
Java 8 函数式接口
www.runoob.com/java/java8-functional-interfaces.html
my.oschina.net/mdxlcj/blog/4819554
mp.weixin.qq.com/s/JGI9eAgjus-XoY-40z7DkQ
Java Lambda 表达式
www.runoob.com/java/java8-lambda-expressions.html
玩转Java8 Stream
mp.weixin.qq.com/s/477FjfZOp2_gY48kRav1fg
JDK8 新特性详解
my.oschina.net/mdxlcj/blog/1622718
my.oschina.net/mdxlcj?tab=newest&catalogId=6361172

