java:函数式编程

系列文章目录

java编程思想:序

文章目录

  • 系列文章目录
  • 前言
  • Lambda表达式
    • 格式
  • 方法引用
    • 格式
    • 组合形式
    • 构造函数引用
  • 函数式接口
    • 常用函数式接口
  • 函数组合
  • 函数柯里化

前言

学习之前应该掌握的单词

Consumer 消费者
Supplier 供应者
Predicate 谓词

Lambda表达式

格式

(参数)->{
     方法体}
  • 当且仅有一个参数时可以不写小括号
  • 如果方法体只有一条语句那么可以不写大括号,并且该语句自动成为Lambda表达式的返回值,如果有多条语句必须使用大括号,需要时加入return

方法引用

格式

类名或对象名::方法名

组合形式

  • 类名::静态方法名
  • 对象名:普通方法名
  • 类名:普通方法名

如果方法不是静态方法那么必须要有一个对象与之关联,使用上述第三种方法引用时必须在接口方法中参数列表的第一项加入与类名所代表类的参数

构造函数引用

类名::new

无论构造函数有没有参数都使用上述形式,编译器会自动区分使用哪个构造函数

函数式接口

上述Lambda表达式和方法引用都需要函数式接口的支持,所谓函数式接口就是只有一个抽象方法的接口(接口中可以有字段,静态方法和默认方法),可以使用**@FunctionalInterface**注解进行标注.

常用函数式接口

特征 方法 接口
无参数;无返回值 run Runnable
无参数;1返回值 get Supplier< T>
1 参数;无返回值 accept Consumer< T>
2 参数;无返回值 accept BiConsumer
1 参数;1返回值 apply Function
2 参数;1返回值 apply BiFunction
1参数;boolean返回值 test Predicate< T>
2参数;boolean返回值 test BiPredicate
1参数;返回类型相同 apply UnaryOperator< T>
2参数:返回类型相同 apply BinaryOperator< T>

函数组合

组合方法 说明 支持接口
andThen 在源函数执行后执行 Function BiFunction Consumer BiConsumer UnaryOperator BinaryOperator
compose 在源函数执行前执行 Function UnaryOperator BinaryOperator
and 逻辑与 Predicate BiPredicate
or 逻辑或 Predicate BiPredicate
negate 逻辑非 Predicate BiPredicate

函数柯里化

柯里化意为:将一个多参数的函数,转换为一系列单参数函数。

  • Function> sum =a -> b -> a + b;
    将两个参数的函数转换为一个参数的函数
  • Function>> sum =a -> b -> c -> a + b + c;
    将三个参数的函数转换为一个参数的函数

你可能感兴趣的:(java,java,lambda,编程语言,接口,javascript)