最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中stream去重的幾種方式舉例

 更新時(shí)間:2023年07月19日 16:59:23   作者:zml_666  
Stream流是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合、數(shù)組等)所生成的元素序列,這篇文章主要給大家介紹了關(guān)于java中stream去重的幾種方式,需要的朋友可以參考下

使用 Stream 的 distinct() 方法

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

示例:

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

使用 collectingAndThen() 和 toCollection() 方法

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

示例:

//根據(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 來(lái)記錄已經(jīng)出現(xiàn)過(guò)的元素,然后過(guò)濾掉重復(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);

補(bǔ)充知識(shí):自定義去重

如何采用stream進(jìn)行自定義去重呢?

我們以age字段為例,進(jìn)行去重

預(yù)期結(jié)果

總結(jié)

到此這篇關(guān)于java中stream去重的幾種方式的文章就介紹到這了,更多相關(guān)java stream去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-Plus中實(shí)現(xiàn)自定義復(fù)雜排序邏輯的詳細(xì)步驟

    MyBatis-Plus中實(shí)現(xiàn)自定義復(fù)雜排序邏輯的詳細(xì)步驟

    這篇文章主要介紹了MyBatis-Plus中實(shí)現(xiàn)自定義復(fù)雜排序邏輯,通過(guò)使用MyBatis-Plus的QueryWrapper和SQL原始片段,我們可以靈活地實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)排序邏輯,這種方法尤其適用于需要對(duì)數(shù)據(jù)進(jìn)行特定規(guī)則排序的場(chǎng)景,需要的朋友可以參考下
    2024-07-07
  • springboot dynamic多數(shù)據(jù)源demo以及常見(jiàn)切換、事務(wù)的問(wèn)題

    springboot dynamic多數(shù)據(jù)源demo以及常見(jiàn)切換、事務(wù)的問(wèn)題

    這篇文章主要介紹了springboot dynamic多數(shù)據(jù)源demo以及常見(jiàn)切換、事務(wù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringBoot使用注解集成Redis緩存的示例代碼

    SpringBoot使用注解集成Redis緩存的示例代碼

    這篇文章主要介紹了在?Spring?Boot?中使用注解集成?Redis?緩存的步驟,包括添加依賴(lài)、創(chuàng)建相關(guān)配置類(lèi)、需要緩存數(shù)據(jù)的類(lèi)(TestService)以及測(cè)試方法(如在?Controller?中的?redisTest?和?redisCache?方法),還對(duì)一些關(guān)鍵代碼和配置進(jìn)行了詳細(xì)說(shuō)明
    2025-01-01
  • 關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)

    關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)

    下面小編就為大家?guī)?lái)一篇關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • SpringBoot接口惡意刷新和暴力請(qǐng)求的解決方法

    SpringBoot接口惡意刷新和暴力請(qǐng)求的解決方法

    在實(shí)際項(xiàng)目使用中,必須要考慮服務(wù)的安全性,當(dāng)服務(wù)部署到互聯(lián)網(wǎng)以后,就要考慮服務(wù)被惡意請(qǐng)求和暴力攻擊的情況,所以本文給大家介紹了SpringBoot接口惡意刷新和暴力請(qǐng)求的解決方法,需要的朋友可以參考下
    2024-11-11
  • MyBatis-Plus如何實(shí)現(xiàn)自動(dòng)加密解密

    MyBatis-Plus如何實(shí)現(xiàn)自動(dòng)加密解密

    這篇文章主要介紹了MyBatis-Plus實(shí)現(xiàn)自動(dòng)加密解密方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot整合RabbitMQ示例詳解

    SpringBoot整合RabbitMQ示例詳解

    這篇文章主要介紹了SpringBoot整合RabbitMQ示例詳解,RabbitMQ是一個(gè)實(shí)現(xiàn)了AMQP高級(jí)消息隊(duì)列協(xié)議的消息隊(duì)列服務(wù),用Erlang語(yǔ)言。是面向消息的中間件,需要的朋友可以參考下
    2023-07-07
  • 部署Nacos的源碼環(huán)境搭建過(guò)程

    部署Nacos的源碼環(huán)境搭建過(guò)程

    這篇文章主要為大家介紹了部署Nacos的源碼環(huán)境搭建過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 使用Feign遠(yuǎn)程調(diào)用時(shí),序列化對(duì)象失敗的解決

    使用Feign遠(yuǎn)程調(diào)用時(shí),序列化對(duì)象失敗的解決

    這篇文章主要介紹了使用Feign遠(yuǎn)程調(diào)用時(shí),序列化對(duì)象失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Boot2.x集成JPA快速開(kāi)發(fā)的示例代碼

    Spring Boot2.x集成JPA快速開(kāi)發(fā)的示例代碼

    這篇文章主要介紹了Spring Boot2.x集成JPA快速開(kāi)發(fā),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

阿拉尔市| 安塞县| 宽甸| 清远市| 盖州市| 抚远县| 搜索| 库尔勒市| 呼图壁县| 敦煌市| 特克斯县| 安宁市| 金堂县| 岱山县| 任丘市| 崇仁县| 张家港市| 武安市| 玛沁县| 阳泉市| 会泽县| 中牟县| 福泉市| 永平县| 五莲县| 上林县| 十堰市| 普安县| 广州市| 蓬莱市| 宿松县| 伊金霍洛旗| 望城县| 龙岩市| 神农架林区| 绵竹市| 瑞昌市| 武邑县| 天水市| 神农架林区| 三亚市|