zoukankan      html  css  js  c++  java
  • Atitit java func interface sumup 目录 1. 函数式接口 1 1.1.1. 什么是函数式接口? 1 1.2.  Function, Supplier, Cons

    Atitit  java  func interface sumup

    目录

    1. 函数式接口 1

    1.1.1. 什么是函数式接口? 1

    1.2.  Function, Supplier, Consumer, Predicate的区别于应用场合 2

    1.3. 他们之间的层级关系这样Function,Function.Supplier    ,Function.Consumer  ,Function.Supplier.Predicate   3

    1.4. JDK 1.8之前已有的函数式接口: 3

    1.5.     Lambda表达式如何在java类型中表示的呢? 3

    2. JDK 1.8 新增加的函数接口: java.util.function 4

    3. 3. 函数式接口 2 3.1.2. Java8中常用的全新的接口 3 7

    3.1. 3.2. Predicate接口 3 8

    3.2. 3.3. Function 接口 4 8

    3.3. Supplier 接口 4 8

    3.4. Consumer 接口 5 8

    3.5. Comparator 接口 5 8

    3.6. 3.4. Optional 接口 6 8

    3.7. 3.5. Stream 接口 7 8

    3.7.1. 3.6.  Filter 过滤 8 8

    3.7.2. 3.7. Sort 排序 8 8

    3.7.3. Map 映射 9 8

    3.7.4. 3.8. Match 匹配 10 8

    3.7.5. Count 计数 12 8

    3.7.6. 3.9. Reduce 规约 12 8

    3.7.7. 3.10. 并行Streams 13 8

    3.7.8. 3.11. Map 15 8

    4. Ref 8

    4.1. Java 8 函数式接口 _ 菜鸟教程.html 8

    1. 函数式接口

    1.1.1. 什么是函数式接口?

      函数式接口,@FunctionalInterface,简称FI,简单的说,FI就是指仅含有一个抽象方法的接口,以@Functionalnterface标注,注意⚠️,这里的抽象方法指的是该接口自己特有的抽象方法,而不包含它从其上级继承过来的抽象方法,例如:

    @FunctionalInterface

    Interface FI{

       abstract judge(int a);

       abstract equals();      

    }

    上一篇我们学习了Function和BiFunction函数式接口,本篇继续了解下其他常用的函数式接口。
    先来看下Predicate
    Predicate函数式接口的主要作用就是提供一个test方法,接受一个参数返回一个布尔类型,Predicate在stream api中进行一些判断的时候非常常用。

     

     

     函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口

     

    1.1.  Function, Supplier, Consumer, Predicate的区别于应用场合

    * JDK8新特性☞Supplier接口测试:该接口返回一个任意泛型的值,和Function接口不同的是该接口没有任何参数
     * Consumer接口:表示执行在单个参数上的操作 Compartor接口:

     

     

    函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

    函数式接口可以被隐式转换为lambda表达式。

    函数式接口可以现有的函数友好地支持 lambda。

     

     

     Function写法应该是这样的: (x) -> {return y;} 

    :Supplier   () -> { return something; }, 

    Consumer  (x) -> {}

    Predicate  (x) -> ret TRUE  。。和Supplier   的区别是返回bool用来做判断很有用

    原则上Function可以运用于所有场合,因为有输入有输出,但较为繁琐。 其他三个都是他的细化模型,写起来简单   

    1.2. 他们之间的层级关系这样Function,Function.Supplier    ,Function.Consumer  ,Function.Supplier.Predicate  

    Toml表达法

     

     

    1.3. JDK 1.8之前已有的函数式接口:

    · java.lang.Runnable

    · java.util.concurrent.Callable

    · java.security.PrivilegedAction

    · java.util.Comparator

    · java.io.FileFilter

    · java.nio.file.PathMatcher

    · java.lang.reflect.InvocationHandler

    · java.beans.PropertyChangeListener

    · java.awt.event.ActionListener

    · javax.swing.event.ChangeListener

    JDK 1.8 新增加的函数接口:

    · java.util.function

    1.4.     Lambda表达式如何在java类型中表示的呢?

         语言设计者投入了大量的精力来思考如何使现有的函数友好地支持lambda。最终采取的办法是:增加函数式接口的概念,函数式接口接口就是具有一个方法的普通接口。像这样的

    接口可以被隐式的转换为Lambda表达式!!!

     

     

    2. JDK 1.8 新增加的函数接口: java.util.function

    java.util.function 它包含了很多类,用来支持 Java的 函数式编程,该包中的函数式接口有:

    序号

    接口 & 描述

    1

    BiConsumer<T,U>

    代表了一个接受两个输入参数的操作,并且不返回任何结果

    2

    BiFunction<T,U,R>

    代表了一个接受两个输入参数的方法,并且返回一个结果

    3

    BinaryOperator<T>

    代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果

    4

    BiPredicate<T,U>

    代表了一个两个参数的boolean值方法

    5

    BooleanSupplier

    代表了boolean值结果的提供方

    6

    Consumer<T>

    代表了接受一个输入参数并且无返回的操作

    7

    DoubleBinaryOperator

    代表了作用于两个double值操作符的操作,并且返回了一个double值的结果。

    8

    DoubleConsumer

    代表一个接受double值参数的操作,并且不返回结果。

    9

    DoubleFunction<R>

    代表接受一个double值参数的方法,并且返回结果

    10

    DoublePredicate

    代表一个拥有double值参数的boolean值方法

    11

    DoubleSupplier

    代表一个double值结构的提供方

    12

    DoubleToIntFunction

    接受一个double类型输入,返回一个int类型结果。

    13

    DoubleToLongFunction

    接受一个double类型输入,返回一个long类型结果

    14

    DoubleUnaryOperator

    接受一个参数同为类型double,返回值类型也为double 。

    15

    Function<T,R>

    接受一个输入参数,返回一个结果。

    16

    IntBinaryOperator

    接受两个参数同为类型int,返回值类型也为int 。

    17

    IntConsumer

    接受一个int类型的输入参数,无返回值 。

    18

    IntFunction<R>

    接受一个int类型输入参数,返回一个结果 。

    19

    IntPredicate

    :接受一个int输入参数,返回一个布尔值的结果。

    20

    IntSupplier

    无参数,返回一个int类型结果。

    21

    IntToDoubleFunction

    接受一个int类型输入,返回一个double类型结果 。

    22

    IntToLongFunction

    接受一个int类型输入,返回一个long类型结果。

    23

    IntUnaryOperator

    接受一个参数同为类型int,返回值类型也为int 。

    24

    LongBinaryOperator

    接受两个参数同为类型long,返回值类型也为long。

    25

    LongConsumer

    接受一个long类型的输入参数,无返回值。

    26

    LongFunction<R>

    接受一个long类型输入参数,返回一个结果。

    27

    LongPredicate

    R接受一个long输入参数,返回一个布尔值类型结果。

    28

    LongSupplier

    无参数,返回一个结果long类型的值。

    29

    LongToDoubleFunction

    接受一个long类型输入,返回一个double类型结果。

    30

    LongToIntFunction

    接受一个long类型输入,返回一个int类型结果。

    31

    LongUnaryOperator

    接受一个参数同为类型long,返回值类型也为long。

    32

    ObjDoubleConsumer<T>

    接受一个object类型和一个double类型的输入参数,无返回值。

    33

    ObjIntConsumer<T>

    接受一个object类型和一个int类型的输入参数,无返回值。

    34

    ObjLongConsumer<T>

    接受一个object类型和一个long类型的输入参数,无返回值。

    35

    Predicate<T>

    接受一个输入参数,返回一个布尔值结果。

    36

    Supplier<T>

    无参数,返回一个结果。

    37

    ToDoubleBiFunction<T,U>

    接受两个输入参数,返回一个double类型结果

    38

    ToDoubleFunction<T>

    接受一个输入参数,返回一个double类型结果

    39

    ToIntBiFunction<T,U>

    接受两个输入参数,返回一个int类型结果。

    40

    ToIntFunction<T>

    接受一个输入参数,返回一个int类型结果。

    41

    ToLongBiFunction<T,U>

    接受两个输入参数,返回一个long类型结果。

    42

    ToLongFunction<T>

    接受一个输入参数,返回一个long类型结果。

    43

    UnaryOperator<T>

    接受一个参数为类型T,返回值类型也为T。

     

     

     

     

    3. 3. 函数式接口 2 3.1.2. Java8中常用的全新的接口 3

    3.1. 3.2. Predicate接口 3

    3.2. 3.3. Function 接口 4

    3.3. Supplier 接口 4

    3.4. Consumer 接口 5

    3.5. Comparator 接口 5

    3.6. 3.4. Optional 接口 6

    3.7. 3.5. Stream 接口 7

    3.7.1. 3.6.  Filter 过滤 8

    3.7.2. 3.7. Sort 排序 8

    3.7.3. Map 映射 9

    3.7.4. 3.8. Match 匹配 10

    3.7.5. Count 计数 12

    3.7.6. 3.9. Reduce 规约 12

    3.7.7. 3.10. 并行Streams 13

    3.7.8. 3.11. Map 15

    4. Ref

    4.1. Java 8 函数式接口 _ 菜鸟教程.html

    Java 8中一些常用的全新的函数式接口 - 001010 - 博客园.html

    Java8的四大核心函数式接口 - CSDN博客.html

  • 相关阅读:
    Spring_3.1
    handler发消息的形式
    css元素排列
    利用Socket远程发送文件
    jtree添加节点
    url传参中文乱码
    struts action和jsp之间的传值
    Struts 404 The requested resource is not available
    tomcat server需要重启的时刻
    c++获取系统时间(引用别人的博文)
  • 原文地址:https://www.cnblogs.com/attilax/p/15197586.html
Copyright © 2011-2022 走看看