使用Lambda表示式的併發程式設計方法
Java SE 8的一個重要補充是lambda表示式功能。使用表示式可以清晰簡潔地表達方法介面。集合庫非常有用。可以迭代集合、過濾集合並提取資料以用於有用的目的。lambda表示式被廣泛用於實現函式式介面。它節省了大量的程式碼。Lambda表示式允許我們提供實現而無需重新定義方法。只有實現程式碼在這裡透過編寫來形成。編譯器不會建立一個.class檔案,因為Java lambda表示式被視為函式。
函式式介面
@FunctionalInterface是Java註解,它宣告一個介面為函式式介面。函式式介面是一個只有一個抽象方法的介面。Lambda表示式允許你實現這個函式式介面。
為什麼要使用Lambda表示式?
它提供了函式式介面的實現。
它減少了程式碼量。
Java Lambda表示式語法
(argument-list)
{
//body
}
它包含三個組成部分:
引數列表 - 可以為空或非空
箭頭 - 用於連線引數列表和表示式的正文
正文 - 包含lambda表示式的表示式和語句
無引數語法
()
{
// body of no parameter lambda
}
單引數語法
(p1)
{
// body of single parameter lambda
}
雙引數語法
(p1,p2)
{
//body of multiple parameter lambda
}
示例:Java Lambda表示式
@FunctionalInterface //It is optional
interface Drawable{
public void draw();
}
public class LambdaExpressionExample2 {
public static void main(String[] args) {
int width=10;
//with lambda
Drawable d2=()->{
System.out.println("Drawing "+width);
};
d2.draw();
}
}
輸出
Drawing 10
示例:無Lambda表示式
interface Drawable{
public void draw();
}
public class LambdaExpressionExample {
public static void main(String[] args) {
int width=10;
//without lambda, Drawable implementation using anonymous class
Drawable d=new Drawable(){
public void draw(){System.out.println("Drawing "+width);}
};
d.draw();
}
}
輸出
Drawing 10
示例:無引數
interface Sayable{
public String say();
}
public class LambdaExpressionExample3{
public static void main(String[] args) {
Sayable s=()->{
return "Don’t settle for average.";
};
System.out.println(s.say());
}
}
輸出
Don’t settle for average
示例:單引數
interface Sayable {
public String say(String name);
}
public class LambdaExpressionExample4{
public static void main(String[] args) {
// Lambda expression with single parameter.
Sayable s1=(name)->{
return "Hello, "+name;
};
System.out.println(s1.say("World"));
// You can omit function parentheses
Sayable s2= name ->{
return "Hello, "+name;
};
System.out.println(s2.say("World"));
}
}
輸出
Hello, World Hello, World
示例:多引數
interface Addable{
int add(int a,int b);
}
public class LambdaExpressionExample5{
public static void main(String[] args) {
// Multiple parameters in lambda expression
Addable ad1=(a,b)->(a+b);
System.out.println(ad1.add(20,20));
// Multiple parameters with data type in lambda expression
Addable ad2=(int a,int b)->(a+b);
System.out.println(ad2.add(200,200));
}
}
輸出
40 400
結論
透過lambda表示式功能,Java SE 8提供了一個寶貴的補充。以清晰簡潔的方式表達方法介面的能力變得輕而易舉。迭代、過濾和提取資料是集合庫提供的許多實際用途之一。實現函式式介面已經廣泛使用lambda表示式,並且它減少了大量的程式碼。lambda表示式的另一個優點是能夠提供實現而無需冗餘的方法重新定義。在這裡,編寫使實現程式碼形成。編譯器不會建立.class檔案,因為Java lambda表示式被視為函式。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP