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

【Java】List集合去重的方式

這篇具有很好參考價值的文章主要介紹了【Java】List集合去重的方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

方式一:利用TreeSet集合特性排序+去重(有序)

TreeSet可以將字符串類型的數(shù)據(jù)按照字典順序進行排序,首字母相同則看第二位

 public static void main(String[] args) {
        // 一.利用TreeSet集合特性排序+去重

        List<String> list=new LinkedList<>();
        list.add("22");
        list.add("11");
        list.add("33");
        list.add("66");
        list.add("22");
        list.forEach(item->{
            System.out.println("去重前的集合:"+item);
        });
        System.out.println("-----------------");


        List<String> result=new LinkedList<>(new TreeSet<>(list));
        System.out.println("去重后的集合:"+result);
    }

去重前的集合元素:22
去重前的集合元素:11
去重前的集合元素:33
去重前的集合元素:66
去重前的集合元素:22


去重后的集合:[11, 22, 33, 66]

方式二:利用HashSet的特性去重(無序)

由于Set的特性是無序且不可重復(fù),我們利用這個特性進行兩步操作:

  1. 把list放入set中
  2. 把set還回list里
public static void main(String[] args) {
        // 利用set的特性去重

        List<String> list=new LinkedList<>();
        list.add("22");
        list.add("11");
        list.add("33");
        list.add("66");
        list.add("22");
        Iterator iter=list.iterator();
        while(iter.hasNext()){
            System.out.println("去重前的集合元素:"+iter.next());
        }
        System.out.println("-----------------");


        // result集合存放最終的結(jié)果
        List<String> result=new LinkedList<>();

        if (list.size()>0&&list!=null){
            // 新建HashSet集合,將list放入
            Set<String> set=new HashSet<>();
            set.addAll(list);

            // 將去重后的set集合放入結(jié)果集合result中
            result.addAll(set);
        }
        System.out.println("去重后的集合:"+result);
    }

去重前的集合元素:22
去重前的集合元素:11
去重前的集合元素:33
去重前的集合元素:66
去重前的集合元素:22


去重后的集合:[22, 11, 33, 66]

方式三:利用LinkedHashSet去重(有序)

LinkedHashSet雖然可以去重,但是根據(jù)它的特性,它不能對數(shù)據(jù)進行排序,只能維持原來插入時的秩序

  public static void main(String[] args) {
        // 利用LinkedHashSet集合去重

        List<String> list=new LinkedList<>();
        list.add("22");
        list.add("11");
        list.add("33");
        list.add("66");
        list.add("22");
        for (int i=0;i<list.size();i++){
            System.out.println("去重前的集合元素:"+list.get(i));
        }
        System.out.println("-----------------");


        List<String> result=new LinkedList<>(new LinkedHashSet<String>(list));
        System.out.println("去重后的集合:"+result);
    }

去重前的集合元素:22
去重前的集合元素:11
去重前的集合元素:33
去重前的集合元素:66
去重前的集合元素:22


去重后的集合:[22, 11, 33, 66]

方式四:迭代器去重(無序)

此方法得到的新集合是無序的,也就是新集合的排列順序和原集合不一致

public static void main(String[] args) {
        // 二.迭代器去重(無序)

        List<String> list=new LinkedList<>();
        list.add("22");
        list.add("11");
        list.add("33");
        list.add("66");
        list.add("22");
        for (String item:list){
            System.out.println("去重前的集合元素:"+item);
        }
        System.out.println("-----------------");


        Iterator<String> iterator=list.iterator();
        while (iterator.hasNext()){
            String next= iterator.next();
            // 如果存在兩個相同的值
            if (list.indexOf(next)!=list.lastIndexOf(next)){
                //移除最后那個相同的值
                iterator.remove();
            }
        }
        System.out.println("去重后的集合:"+list);
    }

去重前的集合元素:22
去重前的集合元素:11
去重前的集合元素:33
去重前的集合元素:66
去重前的集合元素:22


去重后的集合:[11, 33, 66, 22]

方式五:使用list.contains()對全部元素進行判斷(有序)

  • String類型會判斷字符串里是否有相同的部分
  • List里則會判斷是否有相同的元素
  • 我們可以用list.contains()的方法進行判斷,然后將其添加到新的list當(dāng)中,元素的順序不發(fā)生改變
 public static void main(String[] args) {
        // 使用list.contains()對全部元素進行判斷


        System.out.println("----------");
        System.out.println("探究contains()方法");
        String s1="aaa";
        String s2="aa";
        System.out.println(s1.contains(s2));

        List<String> list0=new LinkedList<>();
        list0.add("aaa");
        System.out.println(list0.contains("aa"));
        System.out.println("----------");



        List<String> list=new LinkedList<>();
        list.add("22");
        list.add("11");
        list.add("33");
        list.add("66");
        list.add("22");
        System.out.println("去重前的集合:"+list);
        System.out.println("-----------------");


        List<String> result=new LinkedList<>();
        for (String str:list){
            if (!result.contains(str)){
                result.add(str);
            }
        }
        System.out.println("去重后的集合:"+result);
    }

探究contains()方法
true
false


去重前的集合:[22, 11, 33, 66, 22]
去重后的集合:[22, 11, 33, 66]

方式六:使用Java8特性(Stream去重)去重(有序)

把list集合->Stream流,然后對流用distinct()去重,再用collect()收集

public static void main(String[] args) {
        // 使用Java8特性去重

        List<String> list=new LinkedList<>();
        list.add("22");
        list.add("11");
        list.add("33");
        list.add("66");
        list.add("22");
        System.out.println("去重前的集合:"+list);
        System.out.println("-----------------");


        List<String> result=new LinkedList<>();
        result=list.stream().distinct().collect(Collectors.toList());
        System.out.println("去重后的集合:"+result);
    }

去重前的集合:[22, 11, 33, 66, 22]


去重后的結(jié)集合:[22, 11, 33, 66]

方式七:使用list自身方法remove()–>不推薦

  • 如果你的list里存的比較復(fù)雜,是一個List<Map<String,Object>>格式的情況,最無奈之舉就是這種方法
  • 主要操作是將同一個list用兩層for循環(huán)配合.equals()方法,有相同的就用remove()方法剔除掉,然后得到一個沒有重復(fù)數(shù)據(jù)的list
  public static List<Map<String,Object>> distinct(List<Map<String,Object>> list){
        if (list!=null && list.size()>0){
            for (int i=0;i<list.size();i++){
                for (int j=list.size()-1;j>i;j--){
                    // 這里是對象的比較,如果去重條件不一樣,修改這里即可
                    if (list.get(j).equals(list.get(i))){
                        list.remove(j);
                    }
                }
            }
        }
        return list;
    }

總結(jié):

介紹集合去重的方法中實現(xiàn)最簡潔,且去重之后的順序能和原集合保持一致的實現(xiàn)方法,只有兩種:LinkedHashSet 去重和 Stream 去重,其中后一種去重方法無需借助新集合,是我們優(yōu)先考慮的去重方法文章來源地址http://www.zghlxwxcb.cn/news/detail-766540.html

到了這里,關(guān)于【Java】List集合去重的方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java 1.8 List集合排序、去重、分組、過濾、合并、截取操作

    1、正序 2、逆序 3、根據(jù)某個屬性或多個屬性排序 多個屬性排序:需要添加排序條件就在后面添加.thenComparing(UserVO::getxxx),它是在上一個條件的基礎(chǔ)上進行排序 1、去重 2、根據(jù)某個屬性去重(它將該字段還進行排序了) 3、根據(jù)某個屬性去重(這個方法沒有排序) 4、對多個

    2024年02月01日
    瀏覽(87)
  • JAVA8 獲取list集合中重復(fù)的元素和獲取去重數(shù)據(jù)

    JAVA8 獲取list集合中重復(fù)的元素和獲取去重數(shù)據(jù)

    1.java8獲取list集合中重復(fù)的元素 2.java8根據(jù)List對象屬性獲取重復(fù)數(shù)據(jù)和獲取去重后數(shù)據(jù) 2.1獲取重復(fù)數(shù)據(jù) 結(jié)果: 根據(jù)多個屬性獲取重復(fù)數(shù)據(jù),還在摸索中,歡迎大家來指點?。。。?! 2.2獲取去重后數(shù)據(jù) 結(jié)果:

    2024年02月12日
    瀏覽(91)
  • Java List集合去重、過濾、分組、獲取數(shù)據(jù)、求最值、合并、排序、跳數(shù)據(jù)和遍歷

    請各大網(wǎng)友尊重本人原創(chuàng)知識分享,謹記本人博客:南國以南i、 使用stream().map()提取List對象的某一列值及去重 使用 findAny() 和 findFirst() 獲取第一條數(shù)據(jù) 我是南國以南i記錄點滴每天成長一點點,學(xué)習(xí)是永無止境的!轉(zhuǎn)載請附原文鏈接?。?! 參考鏈接、參考鏈接

    2024年04月11日
    瀏覽(89)
  • List去重的5種方案

    List去重的5種方案

    假設(shè)有以下數(shù)據(jù): 1.for 循環(huán)添加去重 這個是最基本的實現(xiàn)了,創(chuàng)建一個空的 List,添加前判斷一下存在不存在,不存在才添加,這樣就保證了元素不重復(fù)。 2.for 雙循環(huán)去重 利用雙循環(huán),判斷是否有相等的,再進行移除。 3.for 循環(huán)重復(fù)坐標(biāo)去重 復(fù)制一個 list2,再循環(huán) List2,

    2024年02月04日
    瀏覽(92)
  • List去重的幾種方法

    現(xiàn)在設(shè)有Integer類型的ArrayList,list=[0,1,1,3,3,4,5] 1.使用contains 2.使用TreeSet/HashSet/LinkedHashSet 3.Stream流 4.使用迭代器Iterator 5.list中的remove方法

    2024年02月05日
    瀏覽(95)
  • List 去重的 6 種方法,這個方法最完美!

    List 去重的 6 種方法,這個方法最完美!

    在日常的業(yè)務(wù)開發(fā)中,偶爾會遇到需要將 List 集合中的重復(fù)數(shù)據(jù)去除掉的場景。這個時候可能有同學(xué)會問:為什么不直接使用 Set 或者 LinkedHashSet 呢?這樣不就沒有重復(fù)數(shù)據(jù)的問題了嘛? ? 不得不說,能提這個問題的同學(xué)很機智,一眼就看到了問題的本質(zhì)。 ? 但是,在實際

    2024年02月03日
    瀏覽(89)
  • 使用java8 新特性stream流對List<Map<String, Object>>集合進行遍歷、過濾、查詢、去重、排序、分組

    對于一個ListMapString, Object類型的數(shù)據(jù),可以使用Java 8的新特性stream流來進行遍歷、過濾、查詢、去重、排序、分組等操作。 遍歷: 過濾: 查詢: 去重: 排序: 分組:

    2024年02月10日
    瀏覽(106)
  • java stream去重的幾種方式

    這個方法會根據(jù)元素的 hashCode() 和 equals() 方法來判斷是否重復(fù)。如果是自定義的類,需要重寫這兩個方法。 示例: 這個方法可以根據(jù)元素的某個屬性或者多個屬性來去重,比如 name 或者 name+address。這個方法會使用 TreeSet 來排序元素,所以不能保持原來的順序。 示例: 這個方

    2024年02月13日
    瀏覽(90)
  • Java List集合取交集的八種不同實現(xiàn)方式

    Java List集合取交集的八種不同實現(xiàn)方式

    碼到三十五 : 個人主頁 心中有詩畫,指尖舞代碼,目光覽世界,步履越千山,人間盡值得 ! 在Java中,取兩個List集合的交集可以通過多種方式實現(xiàn),包括使用Java 8的Stream API、傳統(tǒng)的for循環(huán)遍歷、使用集合的retainAll方法,以及使用Apache Commons Collections庫等。 方法一:使用Jav

    2024年04月12日
    瀏覽(16)
  • Java02-迭代器,數(shù)據(jù)結(jié)構(gòu),List,Set ,TreeSet集合,Collections工具類

    Java02-迭代器,數(shù)據(jù)結(jié)構(gòu),List,Set ,TreeSet集合,Collections工具類

    目錄 什么是遍歷? 一、Collection集合的遍歷方式 1.迭代器遍歷 方法 流程 案例 2. foreach(增強for循環(huán))遍歷 案例 3.Lamdba表達式遍歷 案例 二、數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)介紹 常見數(shù)據(jù)結(jié)構(gòu) 棧(Stack) 隊列(Queue) 鏈表(Link) 散列表(Hash Table) 樹(Tree) List接口 ArraysList集合 Linked

    2024年02月14日
    瀏覽(54)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包