JavaRush /Java Blog /Random-TW /喝咖啡休息#73。如何使用串流改進您的 Java 程式碼。五個面向 Java 開發人員的最佳 IntelliJ I...

喝咖啡休息#73。如何使用串流改進您的 Java 程式碼。五個面向 Java 開發人員的最佳 IntelliJ IDEA 插件

在 Random-TW 群組發布

如何使用流改進 Java 程式碼

來源: Dev.to喝咖啡休息#73。 使用 Streams 改進您的 Java 程式碼。 五個 Java 開發人員的最佳 IntelliJ IDEA 外掛程式 - 1

什麼是流?

Streams 首次出現在 Java 8 中。根據 Oracle 文檔,它們是用於支援元素流上的函數式操作的類,例如集合上的映射縮減轉換。簡單來說,流由一個資料來源、零個或多個中間操作和一個終端操作組成。

什麼是資料來源?

  • 集合、列表、集合、整數、長整數、雙精確度數、陣列、文件行。

什麼是中間操作?

  • 過濾、映射、排序等
  • 這些操作會傳回一個 Stream,以便它們可以連結到其他操作。

什麼是終端操作?

  • ForEach、collect、reduce、findFirst 等
  • 它們傳回無效或非流結果。
  • 如果執行緒沒有終止操作,則不會呼叫中間體。

讓我們使用 Streams 將函數從命令式風格轉換為聲明式風格

命令式功能(無流):

private int getResult_imperative(List<String> strings) {
    int result = 0;
    for (String string : strings){
        if(isDigit(string.charAt(0))) continue;
        if (string.contains("_")) continue;
        result += string.length();
    }
    return result;
}
在這裡我們注意到我們需要手動執行一些操作:
  • 聲明一個結果變數來追蹤結果。
  • 循環遍歷字串。
  • 編寫兩個if語句(這可能比本例複雜得多)。
  • 將每個的長度加到結果中。

讓我們檢查一下聲明式風格(Streams):

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
那麼有什麼差別呢?
  • 我們透過呼叫stream()函數來獲得一個Stream物件。
  • (中間運算)我們使用過濾函數兩次 - 每次我們指定一個條件,該條件必須僅由我們想要在下一階段移動到的那些元素滿足。
  • (中間操作)我們透過呼叫length方法(使用方法引用樣式)將每個String物件對應到int
  • (終端操作)將所有先前的int值相加。

觀察結果

第二種方法是不是看起來比較簡單?我們表明了我們想要什麼,而不是我們想如何做。這就是聲明式程式設計的精神,也是現代 Java 應用程式中 Stream API 的目標。

五個面向 Java 開發人員的最佳 IntelliJ IDEA 插件

來源:GitHub喝咖啡休息#73。 使用 Streams 改進您的 Java 程式碼。 五個針對 Java 開發人員的最佳 IntelliJ IDEA 外掛程式 - 2插件在定期處理程式碼時在許多情況下都非常有用。它們能夠擴展核心功能、提供各種整合並支援許多任務的自動化。以下是我認為最好的插件:

聲納林特

SonarLint 可讓您在編寫程式碼時修復錯誤和漏洞。它會即時突出顯示編碼問題,為開發人員提供如何修復這些問題的清晰說明,以便您可以在提交程式碼之前修復它們。這個插件是必要的,因為它極大地改進了編碼。

Maven 助手

我希望你正在使用 Maven?我願意!Maven Helper 插件提供:
  • 分析和消除衝突依賴關係的簡單方法;
  • 找到直接或傳遞依賴關係的簡單方法;
  • 為包含目前檔案的模組或根模組執行/調試 Maven 目標的步驟;
  • 在 Maven 模組的目前路徑上開啟終端的操作;
  • 運行/調試當前測試文件的操作。如果 maven-surefire-plugin 配置為跳過或排除測試,則將使用「驗證」目標。各種配置樣式可以在 GitHub 上找到。

程式碼度量

該外掛程式具有基於 Java 文件的自訂難度計算的選項卡指示器。它們在類別和方法中為開發人員提供提示,以便他可以輕鬆確定需要檢查的內容。儘管這不是標準度量,但它非常接近圈複雜度。您也可以透過變更適當的配置條目來自訂項目的複雜度計算。

字串操作

大小寫切換、排序、過濾、縮放、列對齊、grepping、轉義、編碼等等...

JPA 好友

JPA Buddy 讓與 JPA 相關的一切變得簡單又快速。它提供了幫助您使用 Hibernate、Spring Data JPA、Liquibase、Flyway 的工具。 JPA Buddy 的主要特點:
  • JPA 實體:建立和編輯實體、實體屬性、生命週期回呼、索引和約束。支援 JPA 轉換器和 Hibernate 自訂類型。能夠對實體使用 Lombok 註解。
  • 為 JPA 實體建立 equals、hashCode 和 toString 方法的正確實作。
  • JPA 實體聲明的原始碼意圖、檢查和快速修復。
  • 在持久單元節點下的 JPA 結構面板中以圖形方式顯示實體關係。
  • 自動產生 Liquibase 變更日誌和 Flyway 版本遷移:資料庫到資料庫、模型到資料庫、模型到快照比較。
  • Visual Liquibase 變更日誌設計器和編碼說明:建立和編輯專案、參考表名稱、列名稱、包含檔案等。
  • 操作:建立 Liquibase 快照,執行指令「Liquibase update」和「Liquibase updateSQL」。
  • Spring Data Repositories:建立儲存庫、建立儲存庫方法、編輯方法屬性、基於實體類別建立投影、提取 JPQL 查詢。
  • Kotlin:所有視覺設計師完全支援 Kotlin 物件和儲存庫的程式碼產生。
我說的是前五個插件,但我還有一個...

額外的圖標

這是一個圖示集合,新增了 Markdown、Yaml、Maven、Git 等檔案的捷徑。您會習慣它們,因為它們可以幫助您輕鬆識別文件。你肯定會需要它們。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION