jdk8 新特性 lambda表達式---學習筆記

轉自:JDK1.8 十大新特性詳解

前言:“Java is still not dead—and people are starting to figure that out.”

jdk8已經出來很久了,但從來沒有仔細研究過他到底帶來了哪些改變,自從進入了新公司,發現公司代碼中用到了很多jdk8的新特性,無奈,我居然看不懂,所以不得不去學習這些特性,說來也是慚愧。

一、Lambda 表達式

首先看看在jdk8以前的老版本中Java是如何排列字符串的:

List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, new Comparator<String>() {
    @Override
    public int compare(String a, String b) {
        return b.compareTo(a);
    }
});

只需要給靜態方法 Collections.sort 傳入一個List對象以及一個比較器來按指定順序排列。通常做法都是創建一個匿名的比較器對象然後將其傳遞給sort方法。

在Java 8 中你就沒必要使用這種傳統的匿名對象的方式了,Java 8提供了更簡潔的語法,lambda表達式:

Collections.sort(names, (String a, String b) -> {
    return b.compareTo(a);
});

看到了吧,代碼變得更段且更具有可讀性,但是實際上還可以寫得更短:

Collections.sort(names, (String a, String b) -> b.compareTo(a));

對於函數體只有一行代碼的,你可以去掉大括號{}以及return關鍵字,但是你還可以寫得更短點,Java編譯器可以自動推導出參數類型,所以你可以不用再寫一次類型:

Collections.sort(names, (a, b) -> b.compareTo(a));

------TO DO     2018.08.09

------還有更多的lambda使用方法,待我有空再完善筆記,也可以直接參考原文:JDK1.8 十大新特性詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章