Java8常用函数式接口整理

首先我们要明白几个概念,函数式接口、Lambda表达式、高阶函数。

  1. 函数式接口:
    在Java中函数式接口的定义,就是在一个接口中只有一个抽象方法那么这个接口就是函数式接口。但是不包括默认方法(后续有讲解) 、静态方法和与Object类中的重名方法。
  2. Lambda表达式:
    写法:
    参数 箭头符号 方法体,
    (Object param1,Object param2) -> {sout(param1+param2);}; ,
    param1 -> {sout(param1+param2);} ; 如果只有一个参数括号可不写,
    param1 -> sout(param1+param2); 如果方法体只有一句话大括号可以不写,
    () -> sout(param1+param2); 没有参数小括号必须写,
    参数上可以声明参数类型也可以不声明,JDK可以通过上下文推断出参数的类型,
    作用:
    Lambda传递一个行为,而不仅仅是一个值。
    提升了抽象的层次。
    API重用性更好,更加灵。
  3. 高阶函数:
    一个函数的参数或返回值是一个函数,那么他就是一个高阶函数。

自带的函数式接口 java.util.function包下
函数式接口由@FunctionalInterface注解表示
Java8常用函数式接口整理_第1张图片
接下来介绍几个常用的函数式接口

  1. Consumer
    他是接受一个参数没有返回值
    Java8常用函数式接口整理_第2张图片比如说我们常用的forEach方法的参数就是一个consumer接口
    Java8常用函数式接口整理_第3张图片
    在这里插入图片描述
    Consumer 还提供了一个默认方法
    返回一个由Consumer执行,在序列,其次是该操作after操作。 如果执行任何操作抛出异常,它被中继到由操作的调用者。 如果执行此操作抛出一个异常, after操作不会被执行
    就是先执行自己的accept方法在执行参数的accept方法
    Java8常用函数式接口整理_第4张图片
    Java8常用函数式接口整理_第5张图片
  2. Funcation
    他接受一个参数返回一个结果
    Java8常用函数式接口整理_第6张图片
    提供了两个默认方法
    compose
    返回一个由函数,首先应用before函数的输入,然后该功能适用于结果。 如果任一功能的评价抛出一个异常,它被传递到由函数的调用者。
    andThen
    返回一个由函数,这个函数首先适用于它的输入,然后应用after功能的结果。 如果任一功能的评价抛出一个异常,它被传递到由函数的调用者。

示例Java8常用函数式接口整理_第7张图片
3. BiFunction
他是一个传入两个参数 返回一个结果
Java8常用函数式接口整理_第8张图片
他有一个默认方法andThen
返回一个由函数,这个函数首先适用于它的输入,然后应用after功能的结果。 如果任一功能的评价抛出一个异常,它被传递到由函数的调用者。
示例
Java8常用函数式接口整理_第9张图片
4. BinaryOperator
BinaryOperator他是BiFunction一个扩展限于BiFunction两个参数类型和返回值类型相同
Java8常用函数式接口整理_第10张图片
BinaryOperator 提供了两个静态方法
minBy
返回一个BinaryOperator返回根据指定的两个元件的较小的Comparator 。
maxBy
返回一个BinaryOperator返回根据指定的两个元件的更大的Comparator 。
示例
Java8常用函数式接口整理_第11张图片
5. Prediceate
传入一个参数返回一个boolean值
Java8常用函数式接口整理_第12张图片
Prediceate 提供了三个默认方法
and
返回一个由谓词表示短路逻辑和这个谓词和其他。 当评估由断言,如果断言是false ,那么other谓语不评估。
无论是上游的评估过程中抛出的任何异常都转达给呼叫者; 如果此断言的评价抛出一个异常, other谓词将不进行评估
or
返回一个由谓词表示短路逻辑的OR这个谓词和其他。 当评估由断言,如果断言是true ,那么other谓语不评估。
无论是上游的评估过程中抛出的任何异常都转达给呼叫者; 如果此断言的评价抛出一个异常, other谓词将不进行评估
negate
返回表示这个谓词逻辑否定谓语。
Prediceate 提供了一个静态方法
isEqual
返回的谓词,如果两个测试参数等于根据是Objects.equals(Object, Object) 。
示例
Java8常用函数式接口整理_第13张图片
6. Supplier
没有参数得到一个结果
Java8常用函数式接口整理_第14张图片
示例
Java8常用函数式接口整理_第15张图片

你可能感兴趣的:(Java8,java)