1. 程式人生 > 其它 >【HDU 7015 Another String】題解

【HDU 7015 Another String】題解

Lambda表示式的標準格式:

凡是根據上下文推匯出來的內容,都可以省略書寫。

可以省略的內容:

  1. (引數列表):括號中引數列表的資料型別,可以省略不寫

  2. (引數列表):括號中的引數如果只有一個,那麼型別和()都可以省略

  3. {一些程式碼}:如果{}中的程式碼只有一行,無論是否有返回值,都可以省略({},return,分號); 注意:要省略{},return,分號必須一起省略

由三部分組成:

  1. 一些引數

  2. 一個箭頭

  3. 一段程式碼

格式:

(引數列表)——> {一些重寫方法的程式碼};

解釋說明格式

():介面中抽象方法的引數列表,沒有引數,就空著;有引數就寫出引數,多個引數使用逗號分隔

->:傳遞的意思,把引數傳遞給方法體{}

{}:重寫介面的抽象的方法體

/*
需求:
給定一個廚子Cook介面,內含唯一的抽象方法makeFood,且無引數、無返回值
使用Lambda的標準格式呼叫invokeCook方法,列印輸出“吃飯啦!”字樣
*/
public interface Cook {
public abstract void makeFood();
}
public class Demo {
public static void main(String[] args) {
//呼叫invokeCook方法,引數是Cook介面,傳遞Cook介面的匿名內部類物件
invokeCook(new Cook() {
@Override
public void makeFood() {
System.out.println("111");
}
});
//使用Lambda表示式,簡化匿名內部類的書寫
invokeCook(() ->{
System.out.println("2");
});
}
//定義一個方法,引數傳遞Cook介面,方法內部呼叫Cook介面中的方法makeFood
public void invokeCook(Cook cook) {
cook.makeFood();
}
}
public class Demo {
public static void main(String[] args) {
Arrays.sort(arr,new Comparator<>() {
public int compare(Person o1,Person o2) {
return o1-o2;
}
});
Arrays.sort(arr,(Person o1,Person o2) -> {
return o1 - o2;
});
}
}
/*
給定一個計算器Calculator介面,內含抽象方法clac可以將兩個int數字相加得到值
*/
public interface Calculator {
public abstract int calc(int a,int b);
}
public class Demo {
public static void main(String[] args) {
invokeClac(120,130,(int a,int b) -> {
return a + b;
});
}
private static void invokeClac(int a,int b,Calaulator calaulator) {
int result = calaulator.calc(a ,b);
System.out.println("結果是"+result);
}
}

Lambda的使用前提

  1. 使用Lambda必須具有介面,且要求介面中有且僅有一個抽象方法

  2. 使用Lambda必須具有上下文推斷

備註:有且僅有一個抽象方法的介面,稱為"函式式介面"