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

Java中Stream流去除List重復元素的方法

 更新時間:2022年04月06日 16:54:00   作者:BirdMan98  
這篇文章主要為大家詳細介紹了Java中Stream流去除List重復元素的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java中Stream流去除List重復元素的具體代碼,供大家參考,具體內容如下

業(yè)務場景

在開發(fā)中我們常常需要過濾List中的重復對象,而重復的定義往往是根據單個條件或者多個條件,如果是單個條件的話還是比較好處理的,即使不使用工具,代碼也可以很容易實現(xiàn),但如果判斷依據不是單個條件,而是多個條件的話,代碼實現(xiàn)起來就會比較復雜,此時我們一般就會使用工具來簡化開發(fā)

單條件去重代碼

ArrayList<listData> collect = list.stream().collect(Collectors.collectingAndThen(
? ? ? ? ? Collectors.toCollection(() -> new TreeSet<>(
? ? ? ? ? ? Comparator.comparing(
? ? ? ? listData::getId))), ArrayList::new));

解釋

list-列表
listData-列表中存的對象
id是判斷是否重復的條件,只保留唯一id對象

多條件去重代碼

ArrayList<listData> collect = list.stream().collect(Collectors.collectingAndThen(
? ? ?Collectors.toCollection(() -> new TreeSet<>(
? ? ? ?Comparator.comparing(p->p.getPatentName() + ";" + p.getLevel()))), ArrayList::new));

測試代碼

import java.util.*;
import java.util.stream.Collectors;

public class ExcelUtil {

? ? private static String[] params = {"p001","p002","p003","p004"};

? ? public static void main(String[] args) {

? ? ? ? List<Datum> dataList = new ArrayList<>();

? ? ? ? for (int i = 0; i < 100; i++) {
? ? ? ? ? ? if (i%2==0){
? ? ? ? ? ? ? ? Datum datum = new Datum(
? ? ? ? ? ? ? ? ? ? ? ? params[new Random().nextInt(params.length)],
? ? ? ? ? ? ? ? ? ? ? ? params[new Random().nextInt(params.length)],
? ? ? ? ? ? ? ? ? ? ? ? params[new Random().nextInt(params.length)],
? ? ? ? ? ? ? ? ? ? ? ? params[new Random().nextInt(params.length)],
? ? ? ? ? ? ? ? ? ? ? ? params[new Random().nextInt(params.length)]
? ? ? ? ? ? ? ? );
? ? ? ? ? ? ? ? dataList.add(datum);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ??
? ? ? ? System.out.println("0 size : "+dataList.size()+" -> "+dataList);

? ? ? ? // 單條件
? ? ? ? ArrayList<Datum> collect1 = dataList.stream().collect(Collectors.collectingAndThen(
? ? ? ? ? ? ? ? Collectors.toCollection(() -> new TreeSet<Datum>(
? ? ? ? ? ? ? ? ? ? ? ? Comparator.comparing(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Datum::getId))), ArrayList::new));

? ? ? ? System.out.println("1 size : "+collect1.size()+" -> "+collect1);

? ? ? ? // 兩個條件
? ? ? ? ArrayList<Datum> collect2 = dataList.stream().collect(Collectors.collectingAndThen(
? ? ? ? ? ? ? ? Collectors.toCollection(() -> new TreeSet<>(
? ? ? ? ? ? ? ? ? ? ? ? Comparator.comparing(p->p.getId() + ";" + p.getAddress()))), ArrayList::new));

? ? ? ? System.out.println("2 size : "+collect2.size()+" -> "+collect2);

? ? ? ? // 三個條件
? ? ? ? ArrayList<Datum> collect3 = dataList.stream().collect(Collectors.collectingAndThen(
? ? ? ? ? ? ? ? Collectors.toCollection(() -> new TreeSet<>(
? ? ? ? ? ? ? ? ? ? ? ? Comparator.comparing(p->p.getInfo() + ";" + p.getAddress()+";"+p.getName()))), ArrayList::new));

? ? ? ? System.out.println("3 size : "+collect3.size()+" -> "+collect3);

? ? }

}

效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 解決線程并發(fā)redisson使用遇到的坑

    解決線程并發(fā)redisson使用遇到的坑

    這篇文章主要介紹了解決線程并發(fā)redisson使用遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Scheduled如何會在上次任務執(zhí)行完才會執(zhí)行下次任務

    Scheduled如何會在上次任務執(zhí)行完才會執(zhí)行下次任務

    這篇文章主要介紹了Scheduled如何會在上次任務執(zhí)行完才會執(zhí)行下次任務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • IDEA安裝阿里巴巴編碼規(guī)范插件的兩種方式詳解(在線安裝和離線安裝)

    IDEA安裝阿里巴巴編碼規(guī)范插件的兩種方式詳解(在線安裝和離線安裝)

    這篇文章主要介紹了IDEA安裝阿里巴巴編碼規(guī)范插件的兩種方式詳解(在線安裝和離線安裝),本文通過截圖給大家展示的非常詳細,需要的朋友可以參考下
    2021-09-09
  • SpringBoot實現(xiàn)登錄攔截器超詳細教程分享

    SpringBoot實現(xiàn)登錄攔截器超詳細教程分享

    對于管理系統(tǒng)或其他需要用戶登錄的系統(tǒng),登錄驗證都是必不可少的環(huán)節(jié),尤其在?SpringBoot?開發(fā)的項目中。本文為大家準備了超詳細的SpringBoot實現(xiàn)登錄攔截器方法,快收藏一波吧
    2023-02-02
  • java正則表達式的應用 java讀取文件并獲取電話號碼

    java正則表達式的應用 java讀取文件并獲取電話號碼

    這篇文章主要介紹了java正則表達式的應用,應用的內容是java讀取文件并獲取電話號碼,感興趣的小伙伴們可以參考一下
    2015-11-11
  • SpringBoot項目使用內置的單機任務調度功能詳解

    SpringBoot項目使用內置的單機任務調度功能詳解

    這篇文章主要介紹了SpringBoot項目使用內置的單機任務調度功能詳解,SpringBoot框架中提供了2個注解來讓開發(fā)者快速配置來實現(xiàn)單機定時任務調度的功能,分別是@EnableScheduling和 @Scheduled,需要的朋友可以參考下
    2024-01-01
  • 一篇文章弄懂Spring MVC的參數綁定

    一篇文章弄懂Spring MVC的參數綁定

    這篇文章主要給大家介紹了關于如何通過一篇文章弄懂Spring MVC的參數綁定,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • SpringBoot調用公共模塊的自定義注解失效的解決

    SpringBoot調用公共模塊的自定義注解失效的解決

    這篇文章主要介紹了SpringBoot調用公共模塊的自定義注解失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java使用緩沖流復制文件的方法

    java使用緩沖流復制文件的方法

    這篇文章主要為大家詳細介紹了java使用緩沖流復制文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java 守護線程_動力節(jié)點Java學院整理

    Java 守護線程_動力節(jié)點Java學院整理

    Java語言機制是構建在JVM的基礎之上的,意思是Java平臺把操作系統(tǒng)的底層給屏蔽起來,所以它可以在它自己的虛擬的平臺里面構造出對自己有利的機制,而語言或者說平臺的設計者多多少少是收到Unix思想的影響,而守護線程機制又是對JVM這樣的平臺湊合,于是守護線程應運而生
    2017-05-05

最新評論

蒲城县| 吉林省| 东阿县| 叶城县| 绥芬河市| 平和县| 贵州省| 和静县| 荥经县| 临桂县| 栖霞市| 新昌县| 怀来县| 咸阳市| 阿坝县| 苏州市| 凤山市| 九龙坡区| 长寿区| 双城市| 庆阳市| 浪卡子县| 香港| 会同县| 进贤县| 抚顺市| 旺苍县| 忻州市| 丹江口市| 繁峙县| 新乡市| 黄龙县| 南京市| 万宁市| 崇文区| 获嘉县| 措勤县| 宁化县| 丰原市| 开化县| 武威市|