国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java stream去重的幾種方式

這篇具有很好參考價(jià)值的文章主要介紹了java stream去重的幾種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

使用 Stream 的 distinct() 方法

這個(gè)方法會(huì)根據(jù)元素的 hashCode() 和 equals() 方法來判斷是否重復(fù)。如果是自定義的類,需要重寫這兩個(gè)方法。

示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-541901.html

//利用java8的stream去重
List uniqueList = list.stream()
					.distinct()
					.collect(Collectors.toList());
System.out.println(uniqueList.toString());

使用 collectingAndThen() 和 toCollection() 方法

這個(gè)方法可以根據(jù)元素的某個(gè)屬性或者多個(gè)屬性來去重,比如 name 或者 name+address。這個(gè)方法會(huì)使用 TreeSet 來排序元素,所以不能保持原來的順序。

示例:

//根據(jù)name屬性去重
List<User> lt = list.stream().collect(
        collectingAndThen(
                toCollection(() -> new TreeSet<>(Comparator.comparing(User::getName))),
                ArrayList::new)
);
System.out.println("去重后的:" + lt);

使用 filter() 方法

這個(gè)方法需要自定義一個(gè) Predicate 函數(shù),用一個(gè) Set 來記錄已經(jīng)出現(xiàn)過的元素,然后過濾掉重復(fù)的元素。

示例:

//定義一個(gè)Predicate函數(shù)
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Set<Object> seen = ConcurrentHashMap.newKeySet();
    return t -> seen.add(keyExtractor.apply(t));
}

//根據(jù)age屬性去重
list.stream().filter(distinctByKey(s -> s.getAge()))
        .forEach(System.out::println);

到了這里,關(guān)于java stream去重的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java8 列表通過 stream流 根據(jù)對(duì)象屬性去重的三種實(shí)現(xiàn)方法

    java8 列表通過 stream流 根據(jù)對(duì)象屬性去重的三種實(shí)現(xiàn)方法

    0、User對(duì)象 1、使用filter進(jìn)行去重 測(cè)試 ①、疑惑 既然 filter 里面調(diào)用的是 distinctPredicate 方法,而該方法每次都 new 一個(gè)新的 map 對(duì)象,那么 map 就是新的,怎么能做到可以過濾呢 ②、解惑 先看一下 filter 的部分實(shí)現(xiàn)邏輯,他使用了函數(shù)式接口 Predicate ,每次調(diào)用filter時(shí),會(huì)使用

    2024年01月20日
    瀏覽(432)
  • 【Java】List集合去重的方式

    TreeSet可以將字符串類型的數(shù)據(jù)按照字典順序進(jìn)行排序,首字母相同則看第二位 去重前的集合元素:22 去重前的集合元素:11 去重前的集合元素:33 去重前的集合元素:66 去重前的集合元素:22 去重后的集合:[11, 22, 33, 66] 由于Set的特性是無序且不可重復(fù),我們利用這個(gè)特性進(jìn)

    2024年02月04日
    瀏覽(34)
  • java 對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的幾種方式

    可以使用Java 8中的Stream API將List轉(zhuǎn)換為Map,并根據(jù)某個(gè)屬性作為鍵或值。以下是一些示例代碼: 在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象的name屬性,值為Person對(duì)象本身。 在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象本身,值為Person對(duì)象的

    2024年02月13日
    瀏覽(97)
  • Stream流實(shí)踐(二):list 對(duì)象數(shù)組根據(jù)某字段去重的三種基本思路

    相信大家對(duì)于list簡(jiǎn)單數(shù)組的去重很熟悉了,例如以下代碼 那我們來探討下,對(duì)于list中保存為對(duì)象的數(shù)組,根據(jù)內(nèi)部對(duì)象的 某一個(gè)字段 去重有什么好的思路呢? 給出一個(gè)簡(jiǎn)單的Student對(duì)象 大家學(xué)廢了嗎?

    2024年02月16日
    瀏覽(370)
  • JavaScript數(shù)組去重的方式

    JavaScript數(shù)組去重的方式

    數(shù)組去重的意思就是去除數(shù)組中重復(fù)的元素,處理完后數(shù)組中所有的元素都是唯一的,本文介紹了在js中數(shù)組去重的5種方式,請(qǐng)往下看。 Set 對(duì)象 Set 對(duì)象允許你存儲(chǔ)任何類型的唯一值,無論是原始值或者是對(duì)象引用。 Set 中的特殊值 Set 對(duì)象存儲(chǔ)的值總是唯一的,所以需要判

    2024年02月07日
    瀏覽(27)
  • Java中List集合對(duì)象去重及按屬性去重的8種方法

    是大家最容易想到的,先把List數(shù)據(jù)放入Set,因?yàn)镾et數(shù)據(jù)結(jié)構(gòu)本身具有去重的功能,所以再將SET轉(zhuǎn)為List之后就是去重之后的結(jié)果。這種方法在去重之后會(huì)改變?cè)械腖ist元素順序,因?yàn)镠ashSet本身是無序的,而TreeSet排序也不是List種元素的原有順序。 去重后的集合: [kobe, james,

    2024年04月15日
    瀏覽(842)
  • Java創(chuàng)建對(duì)象的幾種方式

    在Java中,對(duì)象是程序中的一種基本元素,它通過類定義和創(chuàng)建。本篇教程旨在介紹Java中創(chuàng)建對(duì)象的幾種方式,包括使用new、反射、clone、反序列化等方式。 在Java中,最常用的創(chuàng)建對(duì)象方式是使用new。使用new創(chuàng)建對(duì)象的具體步驟如下: 使用new并指定

    2024年02月12日
    瀏覽(26)
  • Java 終止線程的幾種方式

    所謂正常運(yùn)行結(jié)束,就是程序正常運(yùn)行結(jié)束,線程自動(dòng)結(jié)束。 一般run()方法執(zhí)行完,線程就會(huì)正常結(jié)束,然而,常常有些線程是伺服線程。他們需要長時(shí)間的運(yùn)行,只有在外部某些條件滿足的情況下,才能關(guān)閉這些線程。使用一個(gè)變量來控制循環(huán),例如:最直接的方法就是設(shè)

    2024年02月07日
    瀏覽(22)
  • Java讀取文件的幾種方式

    1. 使用流讀取文件 2. 使用JDK1.7提供的NIO讀取文件(適用于小文件) 3. 使用JDK1.7提供的NIO讀取文件(適用于大文件) 4. 使用JDK1.4提供的NIO讀取文件(適用于超大文件) 5. 使用cmmons-io依賴提供的FileUtils工具類讀取文件 添加依賴: 6. 使用cmmons-io依賴提供的IOtils工具類讀取文件 添加依賴:

    2024年02月16日
    瀏覽(27)
  • java:解析json的幾種方式

    Java是一種流行的編程語言,它提供了很多實(shí)用的庫和工具,在處理JSON數(shù)據(jù)時(shí)也不例外。在本文中,我們將介紹Java中如何解析JSON數(shù)據(jù)。 JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,它已經(jīng)成為Web應(yīng)用程序中最流行的數(shù)據(jù)格式之一。Java提供了許多庫來處理JSON數(shù)據(jù),包括Jackson、Gson和JS

    2024年02月03日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包