欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中的lambda表达式学习

程序员文章站 2022-05-18 18:58:10
Lambda表达式是给函数式接口(SAM接口)的变量或形参赋值的表达式。Lambda表达式替代了原来使用匿名内部类的对象给函数式接口(SAM接口)的变量或形参赋值的形式。 java提供了大量的函数式接口,在java.util.function包中,一般包含四大类: 1、消费型接口:Consumer< ......

lambda表达式是给函数式接口(sam接口)的变量或形参赋值的表达式。
lambda表达式替代了原来使用匿名内部类的对象给函数式接口(sam接口)的变量或形参赋值的形式。

java提供了大量的函数式接口,在java.util.function包中,一般包含四大类:

  1、消费型接口:consumer<t> : void accept(t t);

  2、供给型接口:supplier<t> : t get();

  3、判断型接口:predication<t> : boolean test(t t);

  4、功能型接口:function<t, r> : r apply(t t);

  自定义函数式接口,使用@functionalinterface注解。

lambda表达式语法格式:
  (形参列表) -> {lambda体}:

    (1)(形参列表)就是sam接口的抽象方法的形参列表
    (2){lambda体}就是实现sam接口的抽象方法的方法体
    (3)->称为lambda操作符,由“减号”和“大于号”构成,中间不能有空格

简化:
  (1)如果{lambda体}只有一句语句,可以省略{}以及{}中的语句的结束;,如果{}没有省略的话,;就不能省略
  (2)如果(形参列表)中形参的类型是已知的,获取可以推断,那么数据类型可以省略
  (3)如果(形参列表)只有一个形参,并且数据类型也已经省略了,那么这个()可以省略了,如果数据类型没有省略,()不能省略
  (4)如果{lambda体}只有一句语句,并且是一个return语句,那么可以省略{}以及{}中的语句的结束;还有return。
  (5)如果没有形参,()不能省略

简单lambda示例:

new thread(() -> {system.out.println("lambda测试");}).start();-> 简化(只有一个语句,可以去掉大括号和分号):new thread(() -> system.out.println("lambda测试")).start();

connection的foreach(consumer<t> c)方法:

list<integer> list = arrays.aslist(1,2,3,4,5); =》list.foreach(num -> system.out.println(num));