stream流式計算的妙用

2021-10-08 00:13:32 字數 1652 閱讀 1933

有了stream流式計算,結合著函式式介面和鏈式呼叫,對於資料的處理變得更加簡單,同時增強可讀性。

比如我們有乙個user類:

@data

@allargsconstructor

@noargsconstructor

public

class

user

然後有一些user物件:

user user1 =

newuser(1

,"a",12

);user user2 =

newuser(2

,"b",32

);user user3 =

newuser(3

,"c",15

);user user4 =

newuser(4

,"d",21

);user user5 =

newuser(5

,"e",29

);

我們有這麼一些要求:

/**

* 按要求找到並操作以下user

* 1,年齡為奇數

* 2,名字為大寫

* 將大寫轉為小寫

* 並按名字倒序排序

* 並取出第乙個

*/

要找到年齡為奇數並且名字為大寫的user只要用過濾器就行了。

結果應該是

user user3 =

newuser(3

,"c",15

);user user4 =

newuser(4

,"d",21

);

這兩位。

然後要將名字從大寫改為小寫,就是呼叫tolowercase()

順序應該是c d,倒序就是d c。呼叫comparatorreverseorder方法即可。

只取乙個值,那就是d了。

我們要的結果就是d

**:

users.

stream()

.filter

(u-> u.

getage()

%2==1

).filter

(u-> u.

getname()

.matches

("[a-z]"))

.map

(u->u.

getname()

.tolowercase()

).sorted

(comparator.

reverseorder()

).limit(1

).foreach

(system.out:

:println)

;

filter裡面要傳predicate,map裡傳function,sorted裡傳comparator,foreach要傳乙個consumer。這四個介面都是函式式介面,抽象方法都只有乙個。

Stream元素流式計算

一 基本使用 1.跟據某個屬性分組officeid map collect list.stream collect collectors.groupingby incomesumpojo getofficeid 2.根據某個屬性分組officeid,彙總某個屬性money mapcollect li...

stream 流式演算法

j a8的流式處理極大的簡化了對於集合的操作,實際上不光是集合,包括陣列 檔案等,只要是可以轉換成流,我們都可以借助流式處理,類似於我們寫sql語句一樣對其進行操作。j a8通過內部迭代來實現對流的處理,乙個流式處理可以分為三個部分 轉換成流 中間操作 終端操作 關於list.stream map ...

流式思想概述(Stream

整體來看,流式思想類似於工廠車間的 生產流水線 這張圖中展示了過濾 對映 跳過 計數等多步操作,這是一種集合元素的處理方案,而方案就是一種 函式模 型 圖中的每乙個方框都是乙個 流 呼叫指定的方法,可以從乙個流模型轉換為另乙個流模型。而最右側的數字 3是最終結果。這裡的 filter map ski...