【自用】JavaSE--Stream流

概述

獲取Stream流

集合的stream流

集合名.stream( );

collection集合

List集合與Set集合都屬于Collection集合,因此可以直接調用stream方法獲取stream流,示例如下

結果===>

map集合

map集合存在鍵值對,因此無法使用該方法直接獲取stream流,可以采用如下兩種方法

  1. 分別將鍵與值裝入到set集合中,再取得他們各自的stream流,對其進行操作
  2. 通過通過 map.enterySet( ) 方法將他們封裝成鍵值對 對象,再將這些鍵值對都裝入set集合,這樣就可以使用collection集合的stream流獲取方法對其進行操作了

數組的stream流

Arrays.stream(數組名)Stream.of(數組名)? ? ?兩種方法均可,如下圖

stream流的中間方法

調用完中間方法后返回的還是一個stream流

map方法

可以理解成一種加工操作,比如遍歷的是對象,想要獲取對象的名字,就可以用map方法得到名字的stream流并返回,如下

注:下圖是采用方法引用簡化過的,原來是? map(s -> s.getName() ),用意就是得到students對象中的所有名字

distinct方法

可以去除stream流中的重復元素,如果需要去重的是自定義對象,如同之前學習過的 去重機制 需要在該對象類中重寫 equals方法 與 hashcode方法 (右鍵generate生成即可)

stream流的終結方法

調用終結方法后就沒有stream流了

max 與 min 方法

如果需要找的最大值或最小值是一個對象,則需要對comparator重寫,如下

收集stream流方法

畢竟stream流的作用就是來簡化操作集合、數組的代碼的,集合、數組才是開發中要使用的東西,因此經常需要將stream流的結果轉換回集合或數組

收集到Collection集合

使用 collect(Collectors.toList()); 就是收集為List集合,使用 collect(Collectors.toSet()); 就是收集為Set集合,示例如下

:stream流只能收集一遍,當收集完后stream流就會關閉,因此不能取出stream流后分別收集,會報錯,具體示例如下:

當第一次使用studentStream.collect之后,stream流已經被關閉了,因此第二段set收集會出錯

收集到Map集合

由于不知道收集后的鍵與值分別取誰,因此需要進行聲明,collect(Collectors.toMap( a -> 鍵, a -> 值?));? 示例如下,將學生的姓名作為鍵,學生的身高作為值

注:該方法無法幫忙去重,如果收集的對象中出現了重復的會報異常,因此最后在收集為map集合前使用 distinc( ) 去重,示例如下:

收集到數組

toArray( )? 即可,示例如下:

如果想要具體聲明是什么類型的數組,則需要進一步在toArray()中聲明,具體如下

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90301.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Elasticsearch】快照與恢復功能詳解

《Elasticsearch 集群》系列,共包含以下文章: 1?? 冷熱集群架構2?? 合適的鍋炒合適的菜:性能與成本平衡原理公式解析3?? ILM(Index Lifecycle Management)策略詳解4?? Elasticsearch 跨機房部署5?? 快照與恢…

技嘉z370主板開啟vtx

技嘉z370vtx應該默認就是開啟狀態,雖然主板開啟的vtx但是系統默認設置會導致vtx不能使用 1. 關閉hyper-V,Windows虛擬機監控程序平臺,虛擬機平臺 控制面板->程序->啟用或關閉windows功能 2.以管理員身份運行CMD bcdedit /set hypervisorlaunchtype off 3.…

Springmvc的自動解管理

中央轉發器&#xff08;DispatcherServlet&#xff09;控制器視圖解析器靜態資源訪問消息轉換器格式化靜態資源管理一、中央轉發器Xml無需配置<servlet><servlet-name>chapter2</servlet-name><servlet-class>org.springframework.web.servlet.Dispatc…

C#_定時器_解析

問題一:這里加lock是啥意思?它的原理是, 為什么可以鎖住? private readonly Timer _timer;/// <summary>/// 構造函數中初始化定時器/// </summary>public FtpTransferService(){// 初始化定時器_timer new Timer(_intervalMinutes * 60 * 1000);_timer.Elapsed…

Trae開發uni-app+Vue3+TS項目飄紅踩坑

前情 Trae IDE上線后我是第一時間去使用體驗的&#xff0c;但是因為一直排隊問題不得轉戰Cursor&#xff0c;等到Trae出付費模式的時候&#xff0c;我已經辦了Cursor的會員&#xff0c;本來是想等會員過期了再轉戰Trae的&#xff0c;但是最近Cursor開始做妖了 網上有一堆怎么…

低代碼中的統計模型是什么?有什么作用?

低代碼開發平臺中的統計模型是指通過可視化配置、拖拽操作或少量代碼即可應用的數據分析工具&#xff0c;旨在幫助技術人員及非技術人員快速實現數據描述、趨勢預測和業務決策。其核心價值在于降低數據分析門檻&#xff0c;使業務人員無需深入掌握統計原理或編程技能&#xff0…

Linux 下在線安裝啟動VNC

描述 Linux中的VNC就類似于Windows中的遠程桌面系統 本文只記錄在Cent OS 7的系統下在線安裝VNC。 安裝VNC 1、安裝VNC yum install tigervnc-server2、配置VNC的密碼 為用戶設置 VNC 密碼&#xff08;首次運行會提示輸入&#xff0c;也可以提前輸入&#xff09; vncpasswd密碼…

支持OCR和AI解釋的Web PDF閱讀器:解決大文檔閱讀難題

支持OCR和AI解釋的Web PDF閱讀器&#xff1a;解決大文檔閱讀難題一、背景&#xff1a;為什么需要這個工具&#xff1f;問題場景解決方案二、技術原理&#xff1a;如何實現這些功能&#xff1f;1、核心技術組件2、工作流程3、關鍵點三、操作指南1、環境準備2、生成Html代碼3、We…

研發過程都有哪些

產品規劃與定義 (Product Planning & Definition) 在詳細的需求調研之前&#xff0c;通常會進行市場分析、競品分析、確立產品目標和核心價值。這個階段決定了“我們要做什么”以及“為什么要做”。 系統設計與架構 (System & Architectural Design) 這是開發的“藍圖”…

舊物回收小程序系統開發——開啟綠色生活新篇章

在當今社會&#xff0c;環保已經成為全球關注的焦點話題。隨著人們生活水平的提高&#xff0c;消費能力不斷增強&#xff0c;各類物品的更新換代速度日益加快&#xff0c;大量舊物被隨意丟棄&#xff0c;不僅造成了資源的巨大浪費&#xff0c;還對環境產生了嚴重的污染。在這樣…

UE5 UI 水平框

文章目錄slot區分尺寸和對齊方式尺寸&#xff1a;自動模式尺寸&#xff1a;填充模式對齊常用設置所有按鈕大小一致&#xff0c;不受文本影響靠右排列和unity的HorizontalLayout不太一樣slot 以在水平框中放入帶文字的按鈕為例 UI如下布置 按鈕的大小受slot的尺寸、對齊和內部…

【Golang】Go語言變量

Go語言變量 文章目錄Go語言變量一、Go語言變量二、變量聲明2.1、第一種聲明方式2.2、第二種聲明方式2.3、第三種聲明方式2.4、多變量聲明2.5、打印變量占用字節一、Go語言變量 變量來源于數學&#xff0c;是計算機語言中能存儲計算結果或能表示值抽象的概念變量可以通過變量名…

Qt WebEngine Widgets的使用

一、Qt WebEngine基本概念Qt WebEngine中主要分為三個模塊&#xff1a;Qt WebEngine Widgets模塊&#xff0c;主要用于創建基于C Widgets部件的Web程序&#xff1b;Qt WebEngine模塊用來創建基于Qt Quick的Web程序&#xff1b;Qt WebEngine Core模塊用來與Chromeium交互。網頁玄…

【C++】標準模板庫(STL)—— 學習算法的利器

【C】標準模板庫&#xff08;STL&#xff09;—— 學習算法的利器學習 STL 需要注意的幾點及 STL 簡介一、什么是 STL&#xff1f;二、學習 STL 前的先修知識三、STL 常見容器特點對比四、學習 STL 的關鍵注意點五、STL 學習路線建議六、總結七、下一章 vector容器快速上手學習…

YOLO算法演進綜述:從YOLOv1到YOLOv13的技術突破與應用實踐,一文掌握YOLO家族全部算法!

引言&#xff1a;介紹目標檢測技術背景和YOLO算法的演進意義。YOLO算法發展歷程&#xff1a;使用階段劃分方式系統梳理各代YOLO的技術演進&#xff0c;包含早期奠基、效率優化、注意力機制和高階建模四個階段。YOLOv13的核心技術創新&#xff1a;詳細解析HyperACE機制、FullPAD…

快速將前端得依賴打為tar包(yarn.lock版本)并且推送至nexus私有依賴倉庫(筆記)

第一步創建js文件 文件名為downloadNpmPackage.jsprocess.env.NODE_TLS_REJECT_UNAUTHORIZED "0";const fs require("fs"); const path require("path"); const request require("request");// 設置依賴目錄 const downUrl "…

Unity VS Unreal Engine ,“電影像游戲的時代” 新手如何抉擇引擎?(結)

Unity VS Unreal Engine &#xff0c;“電影像游戲的時代” 新手如何抉擇引擎&#xff1f;(1)-CSDN博客 這是我的上一篇文章&#xff0c;如果你仍然困惑選擇引擎的事情&#xff0c;我們不妨從別的方面看看 注意&#xff1a;我們可能使用"UE5"來表示Unreal Engine系…

EVAL長度限制突破方法

EVAL長度限制突破方法 <?php $param $_REQUEST[param]; If (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false) //長度小于17&#xff0c;沒有eval和assert關鍵字 {eval($param); } //stripos — 查找字符串…

Linux部署.net Core 環境

我的環境 直接下載安裝就可以了 wget https://builds.dotnet.microsoft.com/dotnet/Sdk/8.0.315/dotnet-sdk-8.0.315-linux-x64.tar.gzmkdir -p $HOME/dotnet && tar zxf dotnet-sdk-8.0.315-linux-x64.tar.gz -C $HOME/dotnet export DOTNET_ROOT$HOME/dotnet expor…

ARM-定時器-PWM通道輸出

學習內容需求點亮4個燈&#xff0c;采用pwm的方式。定時器通道引腳AFLED序號T3CH0PD12AF2LED5CH1PD13AF2LED6CH2PD14AF2LED7CH3PD15AF2LED8實現LED5, LED6, LED7, LED8呼吸燈效果通用定時器多通道點亮T3定時器下的多個通道的燈。開發流程添加Timer依賴初始化PWM相關GPIO初始化P…