函数式编程接口

定义:函数式接口就是只定义一个抽象方法的接口

  • 任何函数式接口都不允许抛出受检异常(checked exception)

Lambda延迟执行

使用Lambda表达式的重点是延迟执行,延迟执行代码的原因有很多,具体的如下:

  1. 在另外一个线程中运行代码
  2. 多次运行代码
  3. 在某个算法的正确时间点上运行代码,比如排序中的比较操作
  4. 当某些情况发生时才运行代码
  5. 只有在需要的时候才运行代码

常用方法

  • sorted
    Integer[] array = list.stream().sorted((dest, org) -> dest.compareTo(org)).toArray(Integer[]::new);
    
  • 范例:
    double ave = list.stream().mapToInt(t -> t.intValue()).average().getAsDouble();
    list.stream().filter(t -> 4 == t).collect(Collectors.toList());  // 过滤
    

常用函数式编程接口

* Predicate:java.util.function.Predicate<T>接口定义了一个名叫test的抽象方法,它接受泛型 T对象,并返回一个boolean
* Consumer:java.util.function.Consumer<T> 定义了一个名叫 accept 的抽象方法, 它接受泛型 T 的对象,没有返回(void)
* Function:java.util.function.Function<T, R>接口定义了一个叫作apply的方法,它接受一个泛型T的对象,并返回一个泛型R的对象
* Runnable:作为无参数或返回值的动作运行
* Supplier<T>:提供一个T类型的值
* BiConsumer<T,U>:处理T和U类型的值
* BiFunction<T,U,R>:有T和U类型参数的函数
* UnaryOperator<T>:类型T上的一元操作符
* BinaryOperator<T>:类型T上的二元操作符
* BiPredicate<T,U>:有两个参数的布尔值函数

results matching ""

    No results matching ""