1. 程式人生 > 其它 >【spfa】AcWing851.spfa求最短路——模板題

【spfa】AcWing851.spfa求最短路——模板題

Lamda表示式

λ希臘字母表中排序第十一位的字母,英語名稱為lambda

Lambda 表示式是在 Java 8 中引入的,並且成為了 Java 8 最大的特點。它使得功能性程式設計變得非常便利,極大地簡化了開發工作。

避免匿名內部類定義過多

其實質屬於函數語言程式設計的概念

Lambda 表示式的語法與特徵

一個 Lambda 表示式具有下面這樣的語法特徵。它由三個部分組成:第一部分為一個括號內用逗號分隔的引數列表,引數即函式式接口裡面方法的引數;第二部分為一個箭頭符號:->;第三部分為方法體,可以是表示式和程式碼塊。語法如下

(params) -> expression [表示式]

​ (params) ->statement [語句]

​ (params) -> {statements}

a-> System.out.println("i like lambda -->"+a);

new Thread (()->System.out.println("多執行緒學習。。。")).start();

lambda表示式推導:

  1. 定義一個函式式介面
interface ILike{
    void lambda();
}
  1. 實現類
class Like implements ILike{

    @Override
    public void lambda() {
        System.out.println("i like lambda");
}
  1. 靜態內部類
static class Like2 implements ILike{

    @Override
    public void lambda() {
        System.out.println("I like lambda2");
    }
}
public static void main(String[] args) {
    ILike like=new Like();
    like.lambda();

    like=new Like2();
    like.lambda();

    //4.區域性內部類
    class Like3 implements ILike{
         @Override
        public void lambda() {
            System.out.println("I like lambda3");
        }
    }

    like=new Like3();
    like.lambda();

    //5.匿名內部類,沒有類的名稱。必須藉助介面或者父類
    like=new ILike() {
        @Override
        public void lambda() {
            System.out.println("i like lambda4");
        }
    };
    like.lambda();

    //6.用lambda簡化
    like=()-> {
        System.out.println("i like lambda5");
    };
    like.lambda();

}

簡化lambda表示式

//函式式介面
interface ILove{
    void love(int a);
}
//簡化1.引數型別
love=(a)->{
    System.out.println("i love you"+a);
};
love.love(250);

//簡化2.括號
love=a -> {
    System.out.println("i love you"+a);
};
love.love(521);

//簡化3.去掉{}
love=a -> System.out.println("i love you"+a);
love.love(222);

總結:

  1. lambda表示式只能有一行程式碼的情況下,才能簡化成為一行。如果有多行,就用程式碼塊包裹
  2. 前提是介面為函式式介面
  3. 多個引數也可以去掉引數型別,要去掉就都去掉,必須加上括號()