java 8新特性 過濾 分組 排序 去重

2021-09-10 19:34:55 字數 1387 閱讀 6563

1.過濾

//過濾出年齡大於30的使用者

listreslutlist=userlist.stream().filter(user ->                               (user.getage()>=30)).collect(collectors.tolist());

2.分組

//根據使用者性別分組

map> resultmap=

userlist.stream().collect(collectors.groupingby(user->user.get***()));

//根據性別分組,再根據年齡分組

map>> groupmap = list.stream().collect(collectors.groupingby(t -> t.get***(), collectors.groupingby(t -> t.getage())));

3.排序

//根據使用者id降序

listreslutlist = list.stream().sorted((a, b) -> a.getid() - b.getid()).collect(collectors.tolist());

4.去重

//方式一:根據id去重

listreslutlist = userlist.stream().collect(collectors.collectingandthen(collectors.tocollection(()->new treeset<>(comparator.comparing(o->o.getid()))),arraylist::new));

//方式二:去重,需要注意的是要先重寫物件user的equals和hashcode方法

listreslutlist = userlist.stream().distinct().collect(collectors.tolist());

5.物件集合,轉其他型別集合

//獲取使用者名稱集合

listreslutlist = userlist.stream().map(t -> t.getname()).collect(collectors.tolist());

6.sum求和

//獲取年齡總和

int count = userlist.stream().maptoint(t -> t.getage()).sum();

7.list轉map

mapmap=list.stream().collect(collectors.tomap(terminalex::getterminal,o->o,(o1,o2)->o1));

JAVA8新特性Stream學習中

stream是資料渠道,用於運算元據源 集合,陣列等 所生成的元素序列。集合講的是資料,流講的是計算 注 stream自己不會儲存元素 stream不會改變源物件。相反,他們會返回乙個持有結果的新的stream stream操作是延遲執行的。這意味著他們會等到需要結果的時候才執行。步驟 建立stre...

java8新特性之一lambda

lambda結合函式式介面使用,函式式介面 functional inte ce 就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。1 可選型別宣告 不需要宣告引數型別,即直接可以寫引數,不需要宣告型別,編譯器可以自動識別型別 2 可選的引數圓括號 乙個引數可以不要圓括號,多個引數需要圓...

Java8 新特性 方法引用 一

package cn.com.zq.demo03.reference.test03.reference 方法引用 練習 使用系統已經存在的 方法 進行引用 為什麼要有方法引用?主要是對lambda表示式的優化 當 中 已經存在 對應的類 對應的物件 對應的this 對應的super 的時候 我們可以...