函数式编程

网友投稿 232 2022-09-20

函数式编程

提示

# 函数式编程

​​#​​ 一、Lambda表达式

注意: 以下方法都可以使用表达式来进行缩写

我们来看Java中如何来定义一个方法

​​#​​ 1. 语法

​​()->{}​​

其中小括号里面可以放入参,大括号就是方法体,里面也允许有返回值。

当方法体中只有返回值而没有其他语句时候,大括号和 ​​return​​ 关键字都可以省略不写。

​​#​​ 2. 方法引用

只要用.引用不报错的,都可以将.换成:

类型

语法

1、引用静态方法

ClassName::staticMethodName

2、引用构造函数

ClassName::new

3、引用特定类型的实例方法

ClassName::instanceMethodName

4、引用特定对象的实例方法

objectName::instanceMethodName

​​#​​ 二、Java8新增函数式接口

​​#​​ 1. Predicate接口

Predicate 接口只有一个参数,返回boolean类型。该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与,或,非)

Predicate predicate = (s) -> s.length() > 0;

1

根据前面的语法我们知道小括号里面可以放入参,大括号里面放出参,当大括号里面只有返回值时候,大括号和 ​​return​​ 关键字也可以省略。如上。

​​#​​ 2. Function 接口

Function 接口有一个参数并且返回一个结果,并附带了一些可以和其他函数组合的默认方法(compose, andThen):

Function function = (x) -> 2 * x;

1

同理,这个接口有一个入参和出参,如果返回体重不包含其他逻辑,只有一个返回值,大括号和 ​​return​​ 关键字也可以省略。如上。

​​#​​ 3. Supplier 接口

Supplier 接口返回一个任意范型的值,和Function接口不同的是该接口没有任何参数

public class Main{ public static void main(String[] args) { //构造方法 Supplier

supplier = () -> new Main(); Supplier
mainSupplier = Main::new; Supplier
mainSupplier1 = Main::staticMethod; } private static Main staticMethod() { return new Main(); }}

1 2 3 4 5 6 7 8 9 10 11

因为没有入参,所以小括号里面什么都不用写。当遇到这种情况,同样可以用上面其他两种来替换

​​#​​ 4. Consumer 接口

Consumer 是一个只有入参,但是无出参的接口。

public class Main { public static void main(String[] args) { List dataList = Arrays.asList("1", "2"); //特定类的静态方法 dataList.forEach(Main::staticMethod); dataList.forEach((x) -> System.out.println(x)); dataList.forEach(System.out::println); } private static void staticMethod(String name) { System.out.println("对象静态方法引用:" + name); }}

1 2 3 4 5 6 7 8 9 10 11 12 13 14

​​#​​ 三、快速记忆

虽然新增的函数式接口并不多,但是想要一次性死记住,还是有一点点的难度。小编的学习方式是 理解这记忆。

类型

简记

1、Predicate

条件类型

2、Supplier

无入参,有出参

3、Function

有入参,有出参

4、Consumer

有入参,无出参

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JVM相关命令
下一篇:《MySQL高级篇》四、索引的存储结构
相关文章

 发表评论

暂时没有评论,来抢沙发吧~