欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA8獲取list集合中重復的元素與獲取去重數據實例

 更新時間:2023年07月05日 11:06:57   作者:胡蘿卜★  
這篇文章主要給大家介紹了關于JAVA8獲取list集合中重復的元素與獲取去重數據的相關資料,在實際開發(fā)中經常會遇到需要找出(刪除)一個list中某些元素的屬性相同的元素,需要的朋友可以參考下

1.java8獲取list集合中重復的元素

      //單獨String集合
        List<String> list = Arrays.asList("a","b","a","c","d","b");
        List<String> collect = list.stream().filter(i -> i != "")               // list 對應的 Stream 并過濾""
                .collect(Collectors.toMap(e -> e, e -> 1, Integer::sum)) // 獲得元素出現頻率的 Map,鍵為元素,值為元素出現的次數
                .entrySet()
                .stream()                       // 所有 entry 對應的 Stream
                .filter(e -> e.getValue() > 1)         // 過濾出元素出現次數大于 1 (重復元素)的 entry
                .map(Map.Entry::getKey)                // 獲得 entry 的鍵(重復元素)對應的 Stream
                .collect(Collectors.toList());
        System.out.println(collect);

2.java8根據List對象屬性獲取重復數據和獲取去重后數據

2.1獲取重復數據

List<Person> personList = new ArrayList<Person>();
        personList.add(new Person("張三", 8, 3000));
        personList.add(new Person("李四", 18, 5000));
        personList.add(new Person("王五", 28, 7000));
        personList.add(new Person("孫六", 38, 9000));
        personList.add(new Person("孫六", 38, 9000));
        personList.add(new Person("孫六", 38, 10000));
       //1.先根據得到一個屬于集合 姓名
        List<String> uniqueList = personList.stream().collect(Collectors.groupingBy(Person::getName, Collectors.counting()))
                .entrySet().stream().filter(e -> e.getValue() > 1)
                .map(Map.Entry::getKey).collect(Collectors.toList());
        uniqueList.forEach(p -> System.out.println(p));
        //計算兩個list中的重復值  3條數據
        List<Person> reduce1 = personList.stream().filter(item -> uniqueList.contains(item.getName())).collect(Collectors.toList());
        System.out.println(reduce1.toString());
        //2.根據多個屬性獲取重復數據,只能重復操作得到重復的數據 工資
        List<Integer> collect1 = reduce1.stream().collect(Collectors.groupingBy(Person::getWages, Collectors.counting()))
                .entrySet().stream().filter(e -> e.getValue() > 1)
                .map(Map.Entry::getKey).collect(Collectors.toList());
        //計算兩個list中的差集
        List<Person> collect2 = reduce1.stream().filter(item -> collect1.contains(item.getWages())).collect(Collectors.toList());
        System.out.println(collect2.toString());

結果: 根據多個屬性獲取重復數據,還在摸索中,歡迎大家來指點!?。。。?/strong>

2.2獲取去重后數據

List<Person> personList = new ArrayList<Person>();
        personList.add(new Person("張三", 8, 3000));
        personList.add(new Person("李四", 18, 5000));
        personList.add(new Person("王五", 28, 7000));
        personList.add(new Person("孫六", 38, 9000));
        personList.add(new Person("孫六", 38, 9000));
        personList.add(new Person("孫六", 38, 10000));
 //去重      
 List<Person> unique = personList.stream().collect(Collectors.collectingAndThen(
                Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new));
        System.out.println("unique:"+unique.toString());

結果:

總結

到此這篇關于JAVA8獲取list集合中重復的元素與獲取去重數據的文章就介紹到這了,更多相關JAVA8獲取list集合重復元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java切分字符串的2種方法實例

    java切分字符串的2種方法實例

    在我們日常工作中經常遇到截取字符串的需求,下面這篇文章主要給大家介紹了關于java切分字符串的2種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Java圖像處理教程之正片疊底效果的實現

    Java圖像處理教程之正片疊底效果的實現

    正片疊底效果是我們平時在Photoshop中會見到的一種效果,下面這篇文章主要給大家介紹了關于利用Java如何實現正片疊底的效果,分享出來供大家參考學習,文中給出了詳細的示例代碼供大家參考學習,需要的朋友可以參考借鑒,下面來一起看看詳細的介紹吧。
    2017-09-09
  • 一文帶你深入了解Java的自動拆裝箱

    一文帶你深入了解Java的自動拆裝箱

    Java推出了對于基本數據類型的對應的對象,將基本數據類型轉換為對象就稱為裝箱,反之則是拆箱,本文主要為大家介紹了Java自動拆裝箱的原理與應用,需要的可以參考下
    2023-11-11
  • SpringBoot Starter機制及整合tomcat的實現詳解

    SpringBoot Starter機制及整合tomcat的實現詳解

    這篇文章主要介紹了SpringBoot Starter機制及整合tomcat的實現,我們知道SpringBoot自己在“后臺”幫我們配置了很多原本需要我們手動去的東西,至于這個“后臺”是啥,就是Starter機制
    2022-09-09
  • 實例講解分布式緩存軟件Memcached的Java客戶端使用

    實例講解分布式緩存軟件Memcached的Java客戶端使用

    這篇文章主要介紹了分布式緩存軟件Memcached的Java客戶端使用,Memcached在GitHub上開源,作者用其Windows平臺下的版本進行演示,需要的朋友可以參考下
    2016-01-01
  • Java通過PropertyDescriptor反射調用set和get方法

    Java通過PropertyDescriptor反射調用set和get方法

    這篇文章主要為大家詳細介紹了Java通過PropertyDescriptor反射調用set和get方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java Fluent Mybatis 分頁查詢與sql日志輸出詳解流程篇

    Java Fluent Mybatis 分頁查詢與sql日志輸出詳解流程篇

    Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內又以Mybatis用的多,基于mybatis上的增強框架,又有mybatis plus和TK mybatis等。今天我們介紹一個新的mybatis增強框架 fluent mybatis關于分頁查詢、sql日志輸出流程
    2021-10-10
  • 利用Java實現動態(tài)加載數據庫

    利用Java實現動態(tài)加載數據庫

    這篇文章主要為大家詳細介紹了一個java小案例,即動態(tài)加載數據庫信息,文中的示例代碼簡潔易懂,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-10-10
  • Java concurrency集合之LinkedBlockingDeque_動力節(jié)點Java學院整理

    Java concurrency集合之LinkedBlockingDeque_動力節(jié)點Java學院整理

    LinkedBlockingDeque是雙向鏈表實現的雙向并發(fā)阻塞隊列。該阻塞隊列同時支持FIFO和FILO兩種操作方式,即可以從隊列的頭和尾同時操作(插入/刪除);并且,該阻塞隊列是支持線程安全。
    2017-06-06
  • SpringBoot中的main方法注入service

    SpringBoot中的main方法注入service

    這篇文章主要介紹了SpringBoot中的main方法注入service操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論