讀Java8函數式編程筆記03_高級集合類和收集器

来源:https://www.cnblogs.com/lying7/archive/2023/01/28/17069633.html
-Advertisement-
Play Games

一、Lua應用場景 游戲開發 獨立應用腳本 Web 應用腳本 擴展和資料庫插件如:MySQL Proxy 和 MySQL WorkBench 安全系統,如入侵檢測系統 教程採用Aide Lua Pro或AndLua+開發安卓應用。在學習開發安卓應用前,先學習lua的基礎課程。 二、配置手機開發環境 ...


1. 方法引用

1.1. 一種引用方法的輕量級語法

1.1.1. 提供了一種簡短的語法

1.1.2. 標準語法為Classname::methodName

1.2. 凡是使用Lambda表達式的地方,就可以使用

1.3. 自動支持多個參數

1.3.1. 前提是選對了正確的函數介面

2. 出現順序

2.1. 流是有序的

2.1.1. 流中的元素都是按順序處理的

2.2. 依賴於數據源和對流的操作

2.3. 在一個有序集合中創建一個流時,流中的元素就按出現順序排列

2.3.1. List

2.4. 如果集合本身就是無序的,由此生成的流也是無序的

2.4.1. HashSet

2.5. 一些操作在有序的流上開銷更大,調用unordered方法消除這種順序就能解決該問題

2.6. 大多數操作都是在有序流上效率更高,比如filter、map和reduce等

2.7. 使用並行流時,forEach方法不能保證元素是按順序處理的

2.7.1. 如果需要保證按順序處理,應該使用forEachOrdered方法

3. 收集器

3.1. 可用來計算流的最終值,是reduce方法的模擬

3.1.1. 生成最終結果的一劑配方

3.1.2. 一種通用的、從流生成複雜值的結構

3.2. 轉換成其他集合

3.2.1. 已有代碼是為集合編寫的,因此需要將流轉換成集合傳入

3.2.2. 在集合上進行一系列鏈式操作後,最終希望生成一個值

3.2.3. 寫單元測試時,需要對某個具體的集合做斷言

3.2.4. toList

3.2.5. toSet

3.2.6. toCollection

3.3. 轉換成值

3.3.1. maxBy

3.3.2. minBy

3.3.3. 按某種特定的順序生成一個值

3.3.4. averagingInt

3.3.4.1. 接受一個Lambda表達式作參數,將流中的元素轉換成一個整數,然後再計算平均數

3.4. 數據分塊

3.4.1. 分解成兩個集合

3.4.2. partitioningBy

3.4.2.1. 接受一個流,並將其分成兩部分

3.5. 數據分組

3.5.1. 使用任意值對數據分組

3.5.2. groupingBy

3.5.2.1. 接受一個分類函數,用來對數據分組

3.5.2.2. 類似SQL中的group by操作

3.6. 字元串

3.6.1. joining

3.7. 其他

3.7.1. counting

3.7.2. mapping

3.7.2.1. 在收集器的容器上執行類似map的操作。但是需要指明使用什麼樣的集合類存儲結果

3.7.3. summarizingLong

3.7.4. reducing

3.8. 下游收集器

3.8.1. 生成部分結果的配方

3.8.2. 主收集器中會用到下游收集器

3.9. 特征

3.9.1. 一組描述收集器的對象,框架可以對其適當優化

3.9.2. characteristics方法定義了特征


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這篇文章主要討論在RPC框架下如何優雅關閉和啟動服務,包括服務提供方如何通知調用方服務關閉重啟信息,服務提供方如何在關閉後處理現有請求和心情求;服務啟動時,如何實現啟動預熱和延遲暴露。 ...
  • Collection常用方法彙總 Collection公共的方法 Collection是單列結合的祖宗介面,它的方法是所有單列集合都可以繼承使用的。 //把給定元素添加到集合中 public boolean add(E e) //把給定元素從集合中刪除 public boolean remove(E ...
  • 談談你對 Java 平臺的理解?“Java 是解釋執行”,這句話正確嗎? Java 本身是一種面向對象的語言,最顯著的特性有兩個方面,一是所謂的“一處編譯,處處運行”(Write once,run anywhere),能夠非常容易地獲得跨平臺能力;另外就是垃圾收集(GC,Garbage Collec ...
  • 首先我們來嘗試將分片的圖片複原為正常的圖片 這裡是六張切成小細條的圖片,原本是一張大圖的,現在我們用python將他們合併到一塊,題外話圖片來源於中華連環畫,*http://www.zhlhh.com/* 這個網站內有很多優秀的連環畫,而且大部分都是免費,推薦給大家 我的思路是用matlib讀圖片, ...
  • IoC 反轉控制原則也被叫做依賴註入 DI, 容器按照配置註入實例化的對象. 本文將實現一個輕量化的 IoC 容器, 完成對象的實例化和註入, 基於註解不依賴於任何庫. (註解參考 JSR-330) ...
  • 隨著業務的發展,系統會越來越龐大,原本簡單穩定的功能,可能在不斷迭代後複雜度上升,潛在的風險也隨之暴露,導致最終服務不穩定,造成業務價值的損失。而為了減少這種情況,其中一種比較好的方式就是提高代碼質量,比如通過代碼審查,從而降低錯誤風險,但是,代碼審查難度大,代碼缺陷、漏洞不易發現,且審查工作隨著代 ...
  • 作者:京東物流 王北永 姚再毅 1 背景 日常開發過程中,尤其在 DDD 過程中,經常遇到 VO/MODEL/PO 等領域模型的相互轉換。此時我們會一個欄位一個欄位進行 set|get 設置。要麼使用工具類進行暴力的屬性拷貝,在這個暴力屬性拷貝過程中好的工具更能提高程式的運行效率,反之引起性能低下、 ...
  • 對於logback的模板來說,我們是可以自定義的,同時它也提供了一些公開的常量,比如%level,%thread這些,我們如果希望自定義這些常量,需要實現ClassicConverter抽象類,重寫它的convert方法。 系統變數 %thread 當前線程 %d{yyyy-MM-dd HH:mm: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...