j**a 8的乙個大亮點是引入lambda表示式,使用它設計的**會更加簡潔。當開發者在編寫lambda表示式時,也會隨之被編譯成乙個函式式介面。
一行執行語句的寫法:
(parameters) -> expression
如果有多行執行語句,可以加上{}
(parameters) ->
如:
public
intadd(int x, int y)
轉換成lambda表示式有以下幾種寫法:
// 指定引數型別及return
(int x, int y) ->
// 指定引數型別,不指定return
(int x, int y) -> x + y;
// 不指定引數型別和return,編譯器會自動推斷
(x, y) -> x + y;
1、只有乙個抽象方法的函式式介面
lambda表示式的目標型別是函式式介面,什麼是函式式介面之後會講。
下面拿建立執行緒來舉例,用lambda表示式可以有以下幾種寫法。
public static void main(string args)
}).start();
runnable runnable = () -> system.out.println("t2");
new thread(runnable).start();
new thread(() -> system.out.println("t3")).start
(); new
thread
(() -> run("t4")).start
(); new
thread
(() -> ).start
();}
private
static
void
run(string str)
最後輸出:
t1t
2t3t
4t5
2、集合批量操作
下面列印list集合的兩種寫法是等價的。
list
<
string
>
list
= arrays.aslist("a","b","c");
for(string str : list)
list
.foreach((e) -> system.out.println(e));
3、流操作
下面是流查詢list集合中等於"a"
的數量。
list.stream().filter
((e) -> "a".equals(e)).count
();
推薦閱讀
面經:史上最全j**a多執行緒面試題及答案
JDK8新特性之Lambda表示式
lambda表示式主要是替換了原有匿名內部類的寫法,也就是簡化了匿名內部類的寫法。lambda語法結構 引數1,引數2.先看乙個使用匿名內部類定義乙個新執行緒的方法 test public void test1 start for int x 0 x 100 x 使用lambda表示式則可以簡化匿名...
Jdk8新特性之排序
comparator提供的方法 author wgr create 2020 4 13 16 12 public class person public string getname public void setname string name public integer getage publ...
jdk8新特性 lambda表示式
1 什麼是lambda表示式?lambda表示式 也叫做閉包 是jdk8中的新語法,它允許我們將函式當成引數傳遞給某個方法或者將 本身作為資料進行處理。2 lambda表示式示例 2.1 用lambda表示式實現runnable 通過匿名內部類方法重寫runnable介面 new thread ne...