【lambda】lambda语法及使用

詹联
2023-12-01

lambda定义

lambda是一个匿名函数(没有函数名的函数)。
在其他OOF语言中,lambda是一段匿名代码片段,在Java中结合函数式接口的含义,可以理解lambda是一类(对象,OOP思想)可以传递的匿名对象(接口实例),一段可以传递的功能代码。

lambda语法结构

语法结构

形参列表 -> lambda方法体

举例:(a,b) -> Integer.compare(a,b)
形参列表:(a,b) 抽象(接口)方法的形参列表
操作符: : -> 箭头操作符
方法体: Integer.compare(a,b) 抽象方法实现(或接口方法实现)

lambda使用

lambda 在一些情况下可以对参数或者方法体进行省略。

1. 无入参,无返回值

  @Test
    public void test1(){
        Runnable runnable = ()->{
            System.out.println(" 我是run方法的实现 ");
        };
    }

2. 有入参,无返回值

 @Test
 public void test2(){
      Consumer<String> consumer = (String str) -> {
          System.out.println(" 传入参数是:" + str);
      };
  }

多个入参以“,"隔开,如: (String s1,Integer s2)-> {}

3. 多个入参,且可以返回值

 @Test
 public void test5(){
      Comparator<String> consumer = (String s1,String s2) -> {
          System.out.println(" 传入参数是:" + s1 + "->"+ s2);
          return s1.compareTo(s2);
      };
  }

4. 数据类型可推断,省略数据类型

//[有入参,无返回值]例子可以简写成:
 @Test
 public void test2(){
      Consumer<String> consumer = (str) -> {
          System.out.println(" 传入参数是:" + str);
      };
  }

类型推断示例:

HashMap<String,Object> map = new HashMap<>();
String[] data = {"",""};

5. 单一入参,省略参数列表括号()

// 继续改造上面的例子
@Test
public void test2(){
     Consumer<String> consumer = tr -> {
         System.out.println(" 传入参数是:" + str);
     };
 }

6. lambda方法体仅一条语句,省略return及大括号{}

//[多个入参,且可以返回值] 例子改造
 @Test
  public void test5(){
       Comparator<String> consumer = (s1,s2) ->  s1.compareTo(s2);
   }

lambda使用之函数式接口
lambda语法及使用
java中的引用

 类似资料: