【spfa】AcWing851.spfa求最短路——模板題
阿新 • • 發佈:2022-05-29
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表示式推導:
- 定義一個函式式介面
interface ILike{
void lambda();
}
- 實現類
class Like implements ILike{ @Override public void lambda() { System.out.println("i like lambda"); }
- 靜態內部類
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);
總結:
- lambda表示式只能有一行程式碼的情況下,才能簡化成為一行。如果有多行,就用程式碼塊包裹
- 前提是介面為函式式介面
- 多個引數也可以去掉引數型別,要去掉就都去掉,必須加上括號()