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

Java中List列表去重有序和無序的6種方法

 更新時間:2024年03月05日 15:02:16   作者:彭世瑜  
在日常的業(yè)務(wù)開發(fā)中,會遇到List中的重復(fù)數(shù)據(jù)去除掉的場景,本文就來介紹一下Java中List列表去重有序和無序的6種方法,具有一定的參考價值,感興趣的可以了解一下

前置知識

正式開始之前,先來搞懂兩組概念:無序集合和有序集合 & 無序和有序。因為接下來的方法實現(xiàn)中,會反復(fù)提及這兩組概念,所以有必要在正式開始之前,先把它們搞清楚。

無序集合

無序集合是指,數(shù)據(jù)讀取的順序和數(shù)據(jù)插入的順序是不一致的。例如,插入集合的順序是:1、5、3、7,而集合的讀取順序竟然是:1、3、5、7。

有序集合

有序集合的概念和無序集合的概念正好相反,它是指集合的讀取順序和插入順序是一致的。例如,插入數(shù)據(jù)的順序是:1、5、3、7,那么讀取的順序也是:1、5、3、7。

有序和無序

通過上面的無序集合和有序集合,我們可以得出有序和無序的概念。 有序指的是數(shù)據(jù)的排列順序和讀取順序符合我們的預(yù)期就叫做有序。而無序指的是數(shù)據(jù)的排列順序和讀取順序不符合我們的預(yù)期就叫做無序。

PS:如果對于有序和無序的概念不是很清楚也沒關(guān)系,通過下面的事例,我們可以進一步的理解它們的含義。

待去重列表

// 列表
List<String> list = new ArrayList<>();
list.add("Tom");
list.add("Jack");
list.add("Steve");
list.add("Tom");

System.out.println(list);
// [Tom, Jack, Steve, Tom]

HashSet去重(不保證順序)

// 去重
Set<String> set = new HashSet<>(list);
List<String> newList = new ArrayList<>(set);

System.out.println(newList);
// [Tom, Steve, Jack]

TreeSet去重(不保證順序)

// 去重
Set<String> set = new TreeSet<>(list);
List<String> newList = new ArrayList<>(set);

System.out.println(newList);
// [Jack, Steve, Tom]

LinkedHashSet去重(保證順序)

// 去重
Set<String> set = new LinkedHashSet<>(list);
List<String> newList = new ArrayList<>(set);

System.out.println(newList);
// [Tom, Jack, Steve]

遍歷List去重(保證順序)

// 去重
List<String> newList = new ArrayList<>();
for (String value : list) {
    if(!newList.contains(value)){
        newList.add(value);
    }
}

System.out.println(newList);
// [Tom, Jack, Steve]

Java8中Stream流處理(保證順序)

// 去重
List<String> newList = list.stream().distinct().collect(Collectors.toList());

System.out.println(newList);
// [Tom, Jack, Steve]

參考文章

 到此這篇關(guān)于Java中List列表去重有序和無序的6種方法的文章就介紹到這了,更多相關(guān)Java中List列表去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 顯示SonarQube私有項目徽章方案流程

    顯示SonarQube私有項目徽章方案流程

    這篇文章主要為大家介紹了如何顯示SonarQube私有項目徽章方案的流程,sonarQube目前不支持私有項目的徽章圖片獲取,這個問題早在?2018年就在sonar社區(qū)里有過激烈的討論,至今無果,只能自己尋求一種可以快速實施的方案
    2022-02-02
  • java對象池管理方式common-pool2使用

    java對象池管理方式common-pool2使用

    這篇文章主要為大家介紹了java對象池common-pool2使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Springboot接口項目如何使用AOP記錄日志

    Springboot接口項目如何使用AOP記錄日志

    這篇文章主要介紹了Springboot接口項目如何使用AOP記錄日志,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • java?CompletableFuture異步任務(wù)編排示例詳解

    java?CompletableFuture異步任務(wù)編排示例詳解

    這篇文章主要為大家介紹了java?CompletableFuture異步任務(wù)編排示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • java中斷機制實例講解

    java中斷機制實例講解

    這篇文章主要介紹了java中斷機制實例講解,用了風(fēng)趣幽默的講法,有對這方面不太懂的同學(xué)可以研究下
    2021-01-01
  • Java控制臺實現(xiàn)猜拳游戲小游戲

    Java控制臺實現(xiàn)猜拳游戲小游戲

    這篇文章主要為大家詳細介紹了Java控制臺實現(xiàn)猜拳游戲小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Java?多線程并發(fā)ReentrantLock

    Java?多線程并發(fā)ReentrantLock

    這篇文章主要介紹了Java?多線程并發(fā)ReentrantLock,Java?提供了?ReentrantLock?可重入鎖來提供更豐富的能力和靈活性,感興趣的小伙伴可以參考一下
    2022-06-06
  • Spring中的@ComponentScan注解詳解

    Spring中的@ComponentScan注解詳解

    這篇文章主要介紹了Spring中的@ComponentScan注解詳解,ComponentScan做的事情就是告訴Spring從哪里找到bean,由你來定義哪些包需要被掃描,一旦你指定了,Spring將會在被指定的包及其下級包中尋找bean,需要的朋友可以參考下
    2024-01-01
  • linux查找安裝jdk并配置JAVA_HOME的方法

    linux查找安裝jdk并配置JAVA_HOME的方法

    這篇文章主要介紹了linux查找安裝jdk,配置JAVA_HOME,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java接口和抽象類實例分析

    Java接口和抽象類實例分析

    這篇文章主要介紹了Java接口和抽象類,實例分析了java接口與抽象類的概念與相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05

最新評論