JavaRush /Java Blog /Random-TW /喝咖啡休息#150。讓我們研究一下 Java 中 lambda 表達式的範例。IntelliJ IDEA 7 個最...

喝咖啡休息#150。讓我們研究一下 Java 中 lambda 表達式的範例。IntelliJ IDEA 7 個最被低估的功能

在 Random-TW 群組發布

Java lambda 表達式的學習範例

來源: Medium 在本文中,我們將了解 lambda 表達式,它是 Java 函數式程式設計的基礎。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 1

Lambda 表達式語法

lambda 表達式的語法直觀、易於理解且易於使用。lambda 表達式由以下部分組成:
  1. 輸入參數
  2. 運算符箭頭
  3. 表達式/語句塊
一般格式為:
<input-params> -> <function-code>

lambda 表達式的範例

Lambda 表達式最好透過範例來理解,所以讓我們來看看其中的一些範例。

1.不接受輸入,不回輸出

簡單的 lambda 表達式不接受任何輸入,也不回傳任何輸出——它實際上只是一個在沒有任何上下文的情況下運行的程式碼區塊。
() -> System.out.println("Here I am!");
在輸入參數位置的開頭指定 ( )意味著不傳遞任何參數(與沒有參數的方法後面的空括號一樣)。

2. 接受單一輸入,不返回輸出

為了讓 lambda 表達式接受參數,我們將其放置在輸入參數位置:
name -> System.out.println("Here you are too, " + name +  "!");
筆記:如果我們有一個輸入參數,我們可以省略括號。我們也可以指定(name),這是完全可以接受的。

3.接受多個輸入,不回輸出

當我們將多個輸入參數傳遞給 lambda 表達式時,我們必須:
  • 將參數括在括號中
  • 使用逗號分隔它們
(name, food) -> System.out.println("So " + name + " enjoys eating " + food + "... interesting!");

4. 一個程式碼段包含多個語句

將 lambda 表達式儲存在一行語句中被認為是一種好的做法。但您也可以使用多行:
() -> {
  System.out.println("The owl and the pussycat went to sea");
  System.out.println("in a beautiful pea green boat");
}

5. 從不指定回傳類型

您可能已經注意到,當定義 lambda 表達式時,沒有指定回傳類型。這是一個例子:
() -> System.out.println("I don't return anything!")
還有一件事:
() -> "I return this String!"
兩個程式碼範例幾乎相同,但第二個 lambda 傳回一個字串。使用它們時請記住這一點。當然,編譯器會透過函數描述子的條件使用來理解它們之間的差異。

6. 盡可能自動套用類型推斷

為了確定類型,編譯器將使用類型推斷。為此,它會查看 lambda 表達式的執行上下文。對於開發人員來說,這意味著他們不必擔心轉換為特定類型。

7. 函數描述子表示法

當我們考慮 lambda 表達式可以指派給什麼型別時,使用函數描述子非常有用。函數句柄本質上是 lambda 表達式(或方法)提供的方法簽章。它的語法幾乎與 lambda 表達式相同,只是有一個輸出類型部分而不是程式碼部分。這是一個例子:
<input-parameter-types> -> <output-parameter-type>

函數描述符的範例

以下是函數描述子的一些範例: () -> () 不帶輸入參數且不傳回值的方法。 (String) -> () 接受輸入參數但不傳回值的方法。 () -> (int, float) 一種不含輸入參數並傳回intfloat(int[]) ->的方法。 (SortedMap<Character, Integer>) 方法,採用int數組並傳回從CharacterInteger的SortedMap。在考慮可用於 lambda 表達式的目標類型時,擁有函數描述符可以更輕鬆地評估類型相容性。

結論

如您所看到的,lambda 表達式是一種簡潔明了的行為封裝方式。它是隨著 JDK 8 的發布而在 Java 中引入的函數式程式設計範式的基礎之一。

IntelliJ IDEA 7 個最被低估的功能

資料來源: Better Programming 很難相信,但多年後我仍然遇到不了解 IntelliJ IDEA 中這些強大功能的人。

1.找到任何東西

記住每個組合鍵並追蹤 IntelliJ IDEA 可以執行的所有操作非常困難。這就是我經常在 IntelliJ IDEA 中使用搜尋的原因。這可以幫助我在一個地方找到我需要的選單項目、工具、設置,甚至文件。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 2

2. 知道你在哪裡

在我發現這個功能之前,我使用「選擇開啟檔案」按鈕在專案樹中顯示目前編輯的檔案。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 3現在 IntelliJ IDEA 為我做到了。這不是預設選項,因此您需要為每個新項目或現有項目進行設定。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 4

3. SQL優化

您是否知道 IDE 中的預設資料庫插件不僅僅是一個簡單的 SQL 執行器?鑑於持久層 (I/O) 始終是應用程式中最慢的部分,我始終確保在使用關聯式資料庫時我的 SQL 查詢具有良好的執行計劃。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 5

4. 多行編輯

您以前可能在 Sublime Text Editor 中使用過此功能。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 6

5. 後退/前進

事實上,我經常透過按後退或前進按鈕回到之前的位置。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 7後退/前進:⌥⌘+左/右箭頭(對於 Win/Linux,Ctrl+Alt+左/右箭頭)。若要開啟最近的文件,請按 ⌘E(對於 Win/Linux 為 Ctrl+E)。

6. 書籤

我為程式碼的重要部分添加了書籤,以便我可以隨時快速引用它們。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 8若要前往書籤,請按 ⌃+<數字>(對於 Win/Linux,按 Ctrl+<數字>)。我會立即說我一次不會使用三個以上的書籤,因為這樣就很難記住它們的用途。

7. 一個編輯器搞定一切

我曾經打開其他文字編輯器(例如 Visual Studio Code 或 Sublime)來保存部分程式碼、JSON、XML,然後連結到它們。但這不是程式碼庫(專案)的一部分,當您嘗試建立或編輯類似的內容時,IntelliJ IDEA 會清楚地提醒您這一點。然後我看到我的一位同事使用 Snippets,並意識到它是多麼天才。 喝咖啡休息#150。 讓我們研究一下 Java 中 lambda 表達式的範例。 IntelliJ IDEA 7 個最被低估的功能 - 9新片段檔:⇧⌘N(對於 Win/Linux,Shift+Ctrl+N)。片段可用並在項目的所有視窗之間同步。我經常使用它們來檢查和格式化從其他地方獲得的一些 JSON 或 SQL。

我的秘方

錦上添花的功能是每天為我節省大量打字時間: Tabnine是一個 JetBrains 插件,用於編譯 AI 支援的 Intellij IDEA 程式碼。現在是免費的,但是快點吧,我認為它不會持續很長時間。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION