自迩

Lambda表达式(一)

1. Lambda表达式基础语法

lambda是一个匿名函数

参数列表  方法体

():描述参数列表

  { }  :描述方法体

  ->  :lambda运算符 读作goes to

 

2. 语法精简

1)参数

由于在接口的抽象方法中,已经定义了参数的数量和类型,所以在lambda表达式中,参数类型可以省略。

备注:如果要省略参数的类型,则每一个参数的类型都要省略

2)参数小括号

如果参数列表中,参数的数量只有一个,则小括号可以省略。

3)方法大括号

如果方法体中只有一条语句,则方法大括号可以省略。

4)如果方法体中唯一一条语句是返回语句,则在省略大括号的同时也要省略return。

 

3. 方法引用

可以快速的将一个lambda表达式的实现指向一个已经实现的方法

语法:方法的隶属者::方法名 例:System.out::println

注意:

1)参数的数量和类型一定要和接口中定义的方法一致;

2)返回值的类型一定要和接口中定义的方法一致。

 

4. 构造方法的引用

类::new 

例:Person::new

 

5. 集合的遍历

list.forEach(System.out::println);

list.forEach(ele -> {

  if(ele % 2 == 0) {

    System.out.println(ele);

  }

});

 

 6. 删除集合中年龄大于10的元素

removeIf: 将集合中每个元素都代入到test方法中,如果返回值true,则删除这个元素

list.removeIf(ele -> age > 10);

 

7. 开辟一条线程,作一个数字的输出

lambda表达式:

Thread thread = new Thread(() -> {

  for(int i = 0; i < 100; i++) {

    System.out.println(i);

  }

});

 

8. 系统内置的一些函数式接口

Predicate<T>         :        参数T  返回值boolean

  IntPredicate         :      int -> boolean

  LontPredicate         :      long -> boolean

  DoublePredicate       :      double -> boolean

Consumer<T>          :      参数T  返回值void

  IntConsumer        :      int -> void

  LontConsumer        :      long -> void

  DoubleConsumer         :        double -> void

Function<T, R>         :      参数T  返回值R

  IntFunction<R>       :         int -> R

  LongFunction<R>      :      long -> R

  DoubleFunction<R>     :         double -> R

  IntToLongFunction     :         int -> long

  IntToDoubleFunction    :       int -> double

  LongToIntFunction     :         long -> int

  LongToDoubleFunction   :         long -> double

  DoubleToIntFunction    :       double -> int

  DoubleToLongFunction   :         double -> long

Supplier<T>         :      参数无  返回值T

UnaryOperator<T>      :      参数T  返回值T

BinaryOperator<T>      :        参数T, T  返回值T

BiFunction<T, U, R>       :         参数T, U  返回值R

BiPredicate<T, U>        :      参数T, U  返回值boolean

BiConsumer<T, U>       :      参数T, U  返回值void

 

常用:

Predicate<T>   Consumer<T>  Function<T, R>  Supplier<T> 

   

9. 闭包

在闭包中引用的变量一定是常量(会自动给变量前面加上final修饰符)。

 

posted on 2021-01-12 08:02  自迩  阅读(47)  评论(0)    收藏  举报

导航