首頁  >  文章  >  Java  >  使用Lambda表達式的並發程式設計方法

使用Lambda表達式的並發程式設計方法

WBOY
WBOY轉載
2023-08-20 08:17:191037瀏覽

使用Lambda表達式的並發程式設計方法

Java SE 8的一個重要增加是lambda表達式函數。使用表達式可以清晰簡潔地表達方法介面。集合庫非常有幫助。集合可以被迭代、過濾和提取資料以實現有用的目的。為了實現函數式接口,廣泛使用lambda表達式。它節省了很多代碼。 Lambda表達式允許我們在不重新定義方法的情況下提供實作。只有在此處透過編寫程式碼才會形成實作程式碼。編譯器不會建立一個.class文件,因為Java lambda表達式被視為函數。

功能介面

@FunctionalInterface是一個Java註解,它將一個介面宣告為函數式介面。函數式介面是只有一個抽象方法的介面。 Lambda表達式可以讓你實作這個函數式介面。

為什麼要使用Lambda表達式?

  • 它提供了功能介面的實作。

  • 它提供了更少的編碼。

Java Lambda表達式語法

(argument-list)
{
   //body
}

它由三個組成部分組成−

  • Argument-List − 可以為空,也可以是非空的

  • Arrow-Taken − 用於將參數列表和表達式的主體連接起來

  • 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

結論

使用表達式,Java SE 8透過lambda表達式功能提供了一個有價值的補充。以清晰簡潔的方式表達方法介面已經變得輕而易舉。迭代、過濾和提取資料是集合庫提供的許多實際用途之一。實作函數介面已經廣泛使用了lambda表達式,並且它能夠大幅減少程式碼量。 lambda表達式的一個優秀特性是能夠在不冗餘地重新定義方法的情況下給出實作。在這個空間中,編寫給予實作程式碼形式。編譯器不會建立一個.class文件,因為函數被視為Java的lambda表達式。

以上是使用Lambda表達式的並發程式設計方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除