黑马程序员技术交流社区

标题: [石家庄校区]就业班JavaSE高级部分day12 [打印本页]

作者: 湿漉漉的文字控    时间: 2018-12-2 15:15
标题: [石家庄校区]就业班JavaSE高级部分day12
就业班JavaSE高级部分day12函数式

函数式接口:
函数式接口在java中指: 有且仅有一个抽象方法的接口,接口中还可以包括其他方法(默认,静态,私有)
@FunctionalInterface注解:
在接口上使用,检测接口是否为函数式接口
Lambda的延迟执行:
Lambda具有"延迟执行"的特点:
   传递Lambda对象, 只有当符合执行条件时, 才会执行代码
使用Lambda表达式作为方法参数
当一个方法的参数是一个函数式接口时, 可以使用Lambda表达式传递该参数, 简化匿名内部类的代码
使用Lambda表达式作为方法返回值
当一个方法的返回值是一个函数式接口时, 可以返回Lambda表达式, 简化匿名内部类的代码
Supplier生产型函数式接口
java.util.function.Supplier<T>函数式接口: 生产型函数式接口
    // 抽象方法
     T get(): 用于获取一个对象或值.
        至于获取什么值, 怎么获取, 需要我们根据应用场景编写Lambda来实现
Consumer消费型函数式接口
java.lang.StringBuilder类: 可变字符序列, 类似于String, 线程不安全效率高   
    StringBuilder reverse(): 将StringBuilder内部保存的内容反转
    String toString(): 转换为String
        new StringBuilder("abc").reverse().toString(); -> "cba" "abc" -> "cba"
java.lang.StringBuffer类: 可变字符序列, 类似于String, 线程安全效率低
    StringBuffer reverse(): 将StringBuffer内部保存的内容反转
    String toString(): 转换为String
java.util.function.Consumer<T>函数式接口: 消费型函数式接口
    // 抽象方法
    void accept(T t): 用于消费(使用)一个对象或值. 至于怎么消费, 要我们根据应用场景编写Lambda实现
    // 默认方法
    default Consumer<T> andThen(Consumer<? super T> after): 拼接两个Consumer接口的Lambda对象实现连续操作. 谁写前面, 谁先消费
Consumer消费型函数式接口: 默认方法andThen()
java.util.function.Consumer<T>函数式接口: 消费型函数式接口
    // 默认方法
    default Consumer<T> andThen(Consumer<? super T> after): 拼接两个Consumer接口的Lambda对象实现连续操作. 谁写前面, 谁先消费
Predicate条件判断函数式接口
java.util.function.Predicate<T>函数式接口: 条件接口, 用于判断
    // 抽象方法
    boolean test(T t): 判断参数传递的对象. 至于怎么判断, 判断什么, 需要我们编写Lambda表达式实现
    // 默认方法 (用于连接多个判断条件)
    default Predicate<T> and(Predicate<? super T> other): &&
    default Predicate<T> or(Predicate<? super T> other):   ||
    default Predicate<T> negate(): , 取相反结果   !   
    boolean b = 判断方式1.or(判断方式2).and(判断方式3).negate().test("abc")
Function转换型函数式接口
函数 y = f(x)
java.util.function.Function<T,R>: 根据一个 T类型的数据 转换为 另一个R类型的数据
    T是 输入(input)的类型
    R是 返回结果(result)的类型
    有进有出, 所以称为"函数Function"
    // 抽象方法
    R apply(T t): 将T转换为R. 至于T和R是什么类型, 以及如何转换, 需要传递Lambda表达式实现
    // 默认方法
    default <V> Function<T, V> andThen(Function<? super R, ? extends V> after): 拼接多个Function转换
Function转换型函数式接口: 默认方法andThen()
default <V> Function<T, V> andThen(Function<? super R, ? extends V> after):
连接多种转换操作, 先做什么, 再做什么







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2