java切片_ java中一個極其強悍的新特性Stream詳解(非常實用)

java8中有兩個非常有名的改進,一個是Lambda表達式,一個是Stream。如果我們了解過函數式編程的話,都知道Stream真正把函數式編程的風格引入到了java中。這篇文章由簡入繁逐步介紹Stream。

一、Stream是什么

從名字來看,Stream就是一個流,他的主要作用就是對集合數據進行查找過濾等操作。有點類似于SQL的數據庫操作。一句話來解釋就是一種高效且易用的數據處理方式。大數據領域也有一個Steam實時流計算框架,不過和這個可不一樣。別搞混了。

舉個例子吧,比如說有一個集合Student數據,我們要刪選出學生名字為“張三”的學生,或者是找出所有年齡大于18歲的所有學生。此時我們就可以直接使用Stream來篩選。當然了這只是給出了其中一個例子。Stream還有很多其他的功能。

Stream和Collection的區別就是:Collection只是負責存儲數據,不對數據做其他處理,主要是和內存打交道。但是Stream主要是負責計算數據的,主要是和CPU打交道。現在明白了吧。

二、Stream語法講解

Stream執行流程很簡單,主要有三個,首先創建一個Stream,然后使用Stream操作數據,最后終止Stream。有點類似于Stream的生命周期。下面我們根據其流程來一個一個講解。

1、前提準備

首先我們創建一個Student類,以后我們每次都是操作這個類

8a3faf8210204e89523f27dbb7af56b8.png

然后下面我們再創建一個StudentData類,用于獲取其數據

37b89e3ee44de05a6c58a59dcf4550ac.png

我們只需要把方法變成static類型的就可以了。

2、創建一個Stream

方式一:通過一個集合創建Stream

9779cfec3649ccfaf6610cbf7b718772.png

方式二:通過一個數組創建Stream

1be3917fd27c2fa75c15edbb55a5e7d2.png

方式三:通過Stream.of

796f1ba8fefb271e9a5129c02d5988b8.png

方式四:創建一個無限流

b7495b55d7fc37accb95635ed92f3a96.png

3、使用Stream操作數據

操作1:篩選和切片

ab77340dfa70a3caa9f36d19a7f37825.png

操作2:映射

77c1b27740cc8e56c7cc56d9ae96d80e.png

操作3:排序

129c5a2490d603bc32283babcb8d5bf0.png

4、終止Stream

操作1:匹配和查找

016011966dd189a661329a1843403bd9.png

操作2:歸約

03ef5888137485b8c49c2d8d5ea7345e.png

操作3:收集

fb2cf8875e373f61e7b2a1ce51c6d9e2.png

stream基本的語法就是這樣,你會發現Stream就像是一個工具一樣,可以幫我們分析處理數據,極其的好用,但是目前還不知道其效率如何。根據網上一位大佬的內存時間分析,其實在數據量比較龐大的時候,Stream可以為我們節省大量的時間,數據量小的時候并不明顯。

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

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

相關文章

java獲取網絡圖片_有了這50套Java畢設項目(源碼 案例),offer拿到手軟,無償分享...

簡介:又到了開學季,不少人都很是煩惱,手把手教你做Java畢設項目,有教程視頻源碼100套隨意選擇,試試手!!列舉其中2個系統大綱在線考試系統1.綜述網絡考試系統的項目背景及國內外發展現狀&#xf…

python字典的建立和輸出_字典的創建和使用

直接創建d {age: 23, name: Daniel, sex: 1}輸出結果:{age: 23, name: Daniel, sex: 1}dict函數# 通過序列對建立字典vaulues [(name, Daniel), (age, 23), (sex, 1)]print dict(values)# 通過關鍵字建立字典print dict(nameDaniel, age23, sex1)# 如果 dict 不傳…

python字符串出棧方法_1.Python實現字符串反轉的幾種方法

1.Python實現字符串反轉的幾種方法題目: 在Python環境下用盡可能多的方法反轉字符串,例如將s "abcdef"反轉成 "fedcba"第一種:使用字符串切片result s[::-1]第二種:使用列表的reverse方法l list(s)l.reverse()result …

linux將日期和日歷信息追加到文件中_Linux常用指令

常用指令 1、幫助指令 man [指令或者配置文件] help 指令 2、文件目錄類指令 1、pwd 功能:顯示當前工作目錄的絕對路徑 2、ls [選項] [目錄或者文件] 功能:列出文件名和目錄使用:ls -l 以列表的形式顯示信息ls -a …

python播放音樂同步歌詞_使用Python下載歌詞并嵌入歌曲文件中的實現代碼

使用python掃描本地音樂并下載歌詞這次這個真的是干貨哦,昨晚弄了半晚上,,,,從8點吃完飯就開始寫,一直到了快12點才弄好,,,新手,傷不起呀。。。。先簡單的說下…

ajax mysql點贊_php+mysql結合Ajax實現點贊功能完整實例

phpmysql結合Ajax實現點贊功能完整實例131415161718192021222324252627282930313233343536//判斷是否已經存在了cookiefunction checkcookie(gindex){var thiscookie goodplus gindex;var mapcookie getCookie(thiscookie)if (mapcookie!null && mapcookie!"&q…

一個搜索框多個按鈕_網站搜索欄設計指南:要不要?怎么設計?

在網站的設計過程中,搜索欄是一個很容易被忽略的部分,但用戶卻依賴它來尋找特定的信息。由于搜索欄是網站中最常用的元素之一,所以搜索欄的設計對用戶體驗有著重要的影響。網站是否需要搜索欄?搜索欄使用背后的思維和心理是幫助用…

mysql的使用優化問題嗎_如何對 mysql 進行優化的問題

3641 天前mingszu-------------------------------------------------------------------------------------------------------------------------------------------------------------------| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Ca…

通過 xlsx 解析上傳excel的數據

一、前言 在前端開發中,特別是在后臺管理系統中,導入數據(上傳excel)到后端是是否常見的功能;而一般的實現方式都是通過接口將excel上傳到后端,再有后端進行數據解析并做后續操作。 今天,來記錄…

狀態機設計的一般步驟_淺談狀態機

來源:公眾號【ZYNQ】ID :FreeZynq整理 :李肖遙本文目錄前言狀態機簡介狀態機分類Mealy 型狀態機Moore 型狀態機狀態機描述一段式狀態機二段式狀態機三段式狀態機狀態機優缺點總結擴展-四段式狀態機01. 前言狀態機是FPGA設計中一種非常重要、…

java中default_Java 中關于default 訪問權限的討論

Java中關于成員變量訪問權限問題一般書中會給出如下表格:簡單地描述一下表中的內容:用private 修飾的成員變量只能在類內部訪問;用default修飾的成員變量可以再內部訪問,也可以被同個包(同一目錄)中的類訪問;default修…

python手機解釋器_python3

Python解釋器Linux/Unix的系統上,Python解釋器通常被安裝在 /usr/local/python3這樣的有效路徑(目錄)里。我們可以將路徑 /usr/local/python3/bin 添加到您的Linux/Unix操作系統的環境變量中(最好參照您python的安裝路徑進行添加),這樣您就可以通過 shel…

increment java_Java中的increment()有什么作用?

publicclassThisTest{privateinti0;//第一個構造器:有一個int型形參ThisTest(inti){this.ii1;//此時this表示引用成員變量i,而非函數參數iSystem.out.println("Intconstructori—...public class ThisTest {private int i0;//第一個構造器&#xff…

python保存模塊_Python使用Pickle模塊進行數據保存和讀取的講解

pickle 是一個 python 中, 壓縮/保存/提取 文件的模塊,字典和列表都是能被保存的.但必須注意的是python2以ASCII形式保存,而在python3中pickle是使用轉換二進制的數據壓縮方法保存數據所以,在保存或者讀取數據的時候,打開文件應該…

java 輸出當月日歷_java 實現打印當前月份的日歷

實現當前日歷的打印,當前日期用*來表示。關鍵得出這個月的第一天是星期幾。基姆拉爾森計算公式W (d2*m3*(m1)/5yy/4-y/100y/400) mod 7在公式中d表示日期中的日數1,m表示月份數。y表示年數。注意1:在公式中有個與其它公式不同的地方&#xff…

pythonmessage用法_請問Mac下如何用python讀取iMessage信息?

很早之前,學習Python web編程的時候,就涉及一個Python的urllib。可以用urllib.urlopen(“url”)。read()可以輕松讀取頁面上面的靜態信息。但是,隨著時代的發展,也來越多的網頁中更多的使用javascript、jQuery、PHP等語言動態生成…

xmlhttprequest 跨域_跨域資源共享(CORS)安全性

跨域資源共享(CORS)安全性背景 提起瀏覽器的同源策略,大家都很熟悉。不同域的客戶端腳本不能讀寫對方的資源。但是實踐中有一些場景需要跨域的讀寫,所以出現了一些hack的方式來跨域。比如在同域內做一個代理,JSON-P等。但這些方式都存在缺陷&…

java 圖片識別 tess4j_圖像文字識別(四):java調用tess4j識別圖像文字

轉自:https://blog.csdn.net/a745233700/article/details/80203340javajava調用tess4j識別圖像文字Tesseract-OCR支持中文識別,而且開源和提供全套的訓練工具,是快速低成本開發的首選。前面記錄過在java中調用tesseract-orc,該方法…

sql in轉換為join_同一個SQL語句,為啥性能差異咋就這么大呢?(1分鐘系列)

《數據庫允許空值,往往是悲劇的開始》一文通過explain來分析SQL的執行計劃,來分析null對索引命中情況的影響,有不少朋友留言,問explain結果中的type字段,ref,ALL等不一樣的值究竟是什么含義。今天花1分鐘簡…

java rmi接口 超時設置_Spring RMI客戶端讀超時設置 | 學步園

標準Java的RMI設置我所知道的有三種方式,其中第1、2種不區分框架均適用,但影響整個JVM級別的RMI服務1. 啟動時設置sun.rmi.transport.tcp.responseTimeout,單位是毫秒java -Dsun.rmi.transport.tcp.responseTimeout502.在應用程序中設置環境變…