日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性

發布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

移位操作提高代碼的可讀性

Java 14帶有Records的預覽語言功能—一種特殊的輕量級類,可以與其他語言中的類似構造進行比較,例如C#中的record類,Kotlin中的data類和Scala中的case類。

A)已經有許多博客文章解釋Java 14記錄,B)大量文章將記錄的用法與Project Lombok的@Value (用于創建不可變的類)進行了比較,因此在此我不再贅述。 😉

Brian Goetz在JEP 384:記錄中進行了解釋(第二,預覽它們背后的動機和規則,例如對記錄聲明的限制以及與“正常”類的相似性。

我注意到了當地的記錄

產生和使用記錄的程序可能會處理許多本身就是簡單變量組的中間值。 聲明記錄以對那些中間值建模通常會很方便。 一種選擇是聲明靜態且嵌套的“幫助程序”記錄,就像今天許多程序聲明幫助程序類一樣。 一個更方便的選擇是在方法內部聲明一條記錄,該記錄靠近操縱變量的代碼。 因此,該JEP提出了類似于本地類的傳統構造的本地記錄。

在以下示例中,將使用本地記錄MerchantSales對商人和每月銷售額的匯總進行建模。 使用此記錄可提高以下流操作的可讀性:

攝影:Dominika Roseclay。

下面的MerchantSales是一個可變的元組,既包含單個Merchant又包含在處理流時計算的銷售額。 我們需要同時捕獲兩者 ,以便能夠對計算出的銷售額進行排序 ,但最終返回該銷售額的(原始)商人。

List<Merchant> findTopMerchants(List<Merchant> merchants, int month) { // Local record record MerchantSales(Merchant merchant, double sales) {} return merchants.stream() .map(merchant -> new MerchantSales(merchant, computeSales(merchant, month))) .sorted((m1, m2) -> Double.compare(m2.getSales(), m1.getSales())) .map(MerchantSales::getMerchant) .collect(toList()); }

這是在方法中定義的記錄這一事實使它成為本地記錄,我可以立即認識到在許多Stream API情況下的優勢,在這種情況下,流需要累積許多分組在一起的值:如示例所示,映射X,計算或生成Y并在流中的后續步驟中同時保留兩者。

當然,在所有這些情況下,我顯然都通過引入了輔助POJO或重新設計了整個流邏輯來解決了這一問題,但是閱讀JEP使我記住Java支持局部類 (不是記錄 ;我的意思是普通類 )。從一開始就差不多。

局部類是非靜態的,因為它們可以訪問封閉塊的實例成員。

本地記錄和本地(內部)類增加了封裝的使用。 您無需使類型在創建它的塊之外更廣泛地可用。

這是本地類的示例。 我正在使用Lombok的@Data生成必需的參數構造函數和getters / setter,以保持較少冗長的精神,但是您始終可以使用純原始Java。

List<Merchant> findTopMerchants(List<Merchant> merchants, int month) { // Local class @Data class MerchantSales { final Merchant merchant; final double sales; } return merchants.stream() .map(merchant -> new MerchantSales(merchant, computeSales(merchant, month))) .sorted((m1, m2) -> Double.compare(m2.getSales(), m1.getSales())) .map(MerchantSales::getMerchant) .collect(toList()); }

因此,當尚未使用Java 14時,或者無法啟用記錄預覽功能時,可以始終使用本地類來提高流操作的可讀性。

51.825217
5.812153

奈梅亨,荷蘭

翻譯自: https://www.javacodegeeks.com/2020/06/local-records-or-classes-to-improve-the-readability-of-stream-operations.html

移位操作提高代碼的可讀性

總結

以上是生活随笔為你收集整理的移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。