讀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 Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...