jdk8新特性 lambda表示式

2021-08-09 10:12:34 字數 1944 閱讀 5261

##1 什麼是lambda表示式?

lambda表示式(也叫做閉包),是jdk8中的新語法,它允許我們將函式當成引數傳遞給某個方法或者將**本身作為資料進行處理。

##2 lambda表示式示例

###2.1 用lambda表示式實現runnable

//通過匿名內部類方法重寫runnable介面

new thread(new runnable()

}).start();

//因為重寫的方法是沒有引數的所以在這個括號中什麼都沒有寫

new thread(() -> ).start();

我們也可以通過lambda表示式實現具有引數的介面,在方法體內編寫重寫的**。

//首選我們具有介面類 在介面中有抽象方法operation

inte***ce integermath

//傳統方式實現介面的方法重寫介面

new integermath()

};//lambda方法實現重寫引數介面方法

integermath integermath = (a,b) -> a * b;

//模擬呼叫

public int operatebinary(int a, int b, integermath op)

//傳統呼叫

public class calculator{};

calcutor calcutor = new calcutor();

system.out.println("5 * 4 = " +

calcutor.operatebinary(5, 4, new integermath()

}));

//lambda表示式進行呼叫

system.out.println("3 * 4 = " + calcutor.operatebinary(3, 4, integermath ));

###2.2 lambda表示式與stream api的新增predicate條件實現filter對集合進行過濾篩選遍歷

//lambda表示式 與 predicate介面進行篩選

list names = new arraylist();

names.add("xiaoming");

names.add("lilei");

names.add("hanmeimei");

names.add("xuzhouzhou");

names.add("linyang");

names.add("jingqiu");

names.add("laosan");

names.add("shenjiayi");

names.add("kejingteng");

names.add("linzhenxin");

names.add("xutaiyu");

/*新增篩選條件*/

predicatepredicate1 = (n) -> n.contains("l");

predicatepredicate2 = (n) -> n.length() > 4;

/*通過流api進行過濾並遍歷結果集

在這裡兩個predicate條件之間有and()與or()兩種條件

*/names.stream().filter(predicate1.or(predicate2)).foreach(n -> );

注意:在lambda表示式中引用的變數是不能進行修改的,也就是在lambda表示式中引用的變數是預設final修飾的。

lambda

public static void main(string args) ).collect(collectors.tolist());

system.out.println(result);

}

JDK8 新特性 Lambda 表示式

lambda 表示式概訴 對介面進行實現呼叫 中代表著介面的入引數 中內容是介面的實現 當 中的引數有切僅有乙個時 本身可以省略 同理 當方法實現有切僅有一行時 本身也可以省略 宣告介面 public inte ce personsaymethod使用介面 public class lambdate...

JDK8新特性 Lambda表示式(上)

lambda表示式理解為簡介的表示可傳遞的匿名函式的一種方式。匿名,與普通的方法不同,沒有明確的名稱 函式,不像普通方法那樣屬於某個特定的類,但是他和方法一樣都具有引數列表 函式主體 返回型別 還有可能有丟擲異常的列表 傳遞,可以作為引數傳遞給方法或儲存在變數中 簡潔,無需像匿名類那樣寫很多的模版 ...

JDK8新特性之Lambda表示式

lambda表示式主要是替換了原有匿名內部類的寫法,也就是簡化了匿名內部類的寫法。lambda語法結構 引數1,引數2.先看乙個使用匿名內部類定義乙個新執行緒的方法 test public void test1 start for int x 0 x 100 x 使用lambda表示式則可以簡化匿名...