關於jdk8使用stream去重

2021-10-09 18:57:44 字數 711 閱讀 7459

1.使用distinct()去重

distinct是stream自帶方法,根據hashcode和equals()方法進行去重,會保留第一次出現資料。示例:

list.stream().distinct().collect(collectors.tolist());
2.使用filter

filter是stream自帶的篩選方法,需要實現自定義方法;

private static predicatedistinctbykey(function<? super t, ?> keyextractor) 

listlist2 = list.stream().filter(distinctbykey((p) -> (p.get屬性名稱()))).collect(collectors.tolist());

3.使用collectingandthen。示例:

listentitylist = collect.stream().collect(collectors.collectingandthen(collectors.tocollection(()->new concurrentskiplistset<>(comparator.comparing(entity::getaid).thencomparing(entity::getuid))),arraylist::new))))

JDK8之lambda處理stream的常用例子

在日常的編碼中,我們經常要對集合類物件進行處理。jdk8之前,我們可能要用for迴圈等方式來處理集合中的每乙個元素。不過jdk8的lambda表示式給了我們更方便的選擇。關於lambda表示式和stream的介紹,這裡有一篇文章寫得非常好,詳細易懂。jdk 8 函式式程式設計入門 既然本文是要寫一些...

JDK8新特性之Stream流

j a.util.stream.stream stream流和傳統的io流,它們都叫流,卻是兩個完全不一樣的概念和東西。流可以簡單的說是處理資料集合的東西,可以申明式流式api來處理集合,而不是寫乙個邏輯實現。流分為順序流及並行流,順序流即每個指令按順序執行,並行流即集合裡面的操作並行執行。list...

Jdk8新特性之Stream 3

對比一下序列流和並行流的效率 author wgr create 2020 3 31 public class demo07parallel after public void destory test public void testparallelstream test public void ...