List 去除重複數據的五種方式,舒服~

2022-01-29 Java編程專欄

作者 | 多纖果凍

來源 | csdn.net/qq_37939251/article/details/90713643以下介紹五種-不同的方法去除 Java 中ArrayList中的重複數據
1.使用LinkedHashSet刪除arraylist中的重複數據

LinkedHashSet是在一個ArrayList刪除重複數據的最佳方法。LinkedHashSet在內部完成兩件事:

Java示例使用LinkedHashSet刪除arraylist中的重複項。在給定的示例中,numbersList是包含整數的arraylist,其中一些是重複的數字,例如1,3和5.我們將列表添加到LinkedHashSet,然後將內容返回到列表中。結果arraylist沒有重複的整數。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;

public class ArrayListExample
{
    public static void main(String[] args)
    
    {

        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));

        System.out.println(numbersList);

        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);

        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);

        System.out.println(listWithoutDuplicates);

    }

}

輸出結果

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]

[1, 2, 3, 4, 5, 6, 7, 8]

2.使用java8新特性stream進行List去重

要從arraylist中刪除重複項,我們也可以使用java 8 stream api。使用steam的distinct()方法返回一個由不同數據組成的流,通過對象的equals() 方法進行比較。

收集所有區域數據List使用Collectors.toList()。

Java程序,用於在不使用Set的情況下從java中的arraylist中刪除重複項。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ArrayListExample
{
    public static void main(String[] args)
    
    {
    
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));

        System.out.println(numbersList);

        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());

        System.out.println(listWithoutDuplicates);
        
    }
    
}

輸出結果

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]

[1, 2, 3, 4, 5, 6, 7, 8]

3.利用HashSet不能添加重複數據的特性 由於HashSet不能保證添加順序,所以只能作為判斷條件保證順序:

private static void removeDuplicate(List<String> list) {
    HashSet<String> set = new HashSet<String>(list.size());
    List<String> result = new ArrayList<String>(list.size());
    for (String str : list) {
        if (set.add(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

4.利用List的contains方法循環遍歷,重新排序,只添加一次數據,避免重複:

private static void removeDuplicate(List<String> list) {
    List<String> result = new ArrayList<String>(list.size());
    for (String str : list) {
       if (!result.contains(str)) {
           result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

5.雙重for循環去重

for (int i = 0; i < list.size(); i++) { 
for (int j = 0; j < list.size(); j++) { 
if(i!=j&&list.get(i)==list.get(j)) { 
list.remove(list.get(j)); 
 } 

"Java編程專欄"專注Java技術分享

相關焦點

  • 系列(1):數據checklist
    本文分析了做後臺數據cheklist需要注意的十個方面:需要哪些數據(業務)、數據的來源(技術)、數據操作、數據批量上傳、數據校驗、數據展示方式和性能、數據實時性要求、數據計算規則(口徑)、歷史數據和版本處理記錄、數據變更。做後臺,經常需要跟一些數據打交道,稍不注意,坑就在那裡。虛擬場景:當業務方跟小明說,我們要加一個很簡單的數據。
  • Excel | 刪除重複數據的五個簡單方法
    問題來源韓老師原來講過關於刪除重複數據的方法:EXCEL | 一鍵刪除重複值,爽到沒朋友、EXCEL
  • Java 數組轉 List 的三種方式及對比
    使用場景:Arrays.asList(strArray)方式僅能用在將數組轉換為List後,不需要增刪其中的值,僅作為數據源讀取使用。二.數組轉為List後,支持增刪改查的方式通過ArrayList的構造器,將Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList轉為java.util.ArrayList。
  • 什麼方式可去除眼袋,五種方法緩解眼睛浮腫,日常注意
    眼袋是特別常見的,尤其是一些女性對於它的出現是非常的難以接受,會影響我們面部的整體美觀,有眼袋的人看起來會更顯老,同時也會讓自身的形象受到很大的影響,如果遇到眼袋的問題,應該怎樣去除?下面我們一起來了解一下去除眼袋的最簡單方法,五種方法可以輕輕鬆鬆的甩掉眼睛浮腫的問題。
  • 3種Python數據結構,13種創建方法,這個總結,超讚!
    本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】經微信公眾號授權轉載,如需轉載與原文作者聯繫Python常用的數據結構,有如下幾種。但是我們用的最多的,還是字符串、列表、字典這3種。
  • 跳表(skip list)
    進行對比操作時,不僅要檢查score值,還要檢查member;當score值可以重複時,單靠score值無法判斷一個元素的身份,所以需要連member域都一併檢查才行。這個修改版的跳躍表由 redis.h/zskiplist 結構定義:```ctypedef struct zskiplist {// 頭節點,尾節點struct zskiplistNode *header, *tail;// 節點數量unsigned
  • 小心避坑:MySQL分頁時使用 limit+order by 會出現數據重複問題
    而如果使用如下方式,則不會出現重複的情況:SELECT  *FROM  postWHERE  post_status = 'publish'ORDER BY  view_count descLIMIT  5, 5但是,由於post表的欄位很多,僅僅希望用這兩個欄位,不想把post_content
  • Java中List排序的3種方法!
    List 排序的常見方法有以下 3 種:如果是 JDK 8 以上的環境,也可以使用 Stream 流進行排序。下面我們分別來看各種排序方法的具體實現。使用 Comparator 比較器,無需修改原 Person 類,只需要擴充一個 Person 類的比較器就行了,Comparator 的實現方法有以下兩種:其中,第二種實現方法要更簡潔一些,我們通過下面的具體代碼,來觀察一下二者的區別。
  • Java中的Set、List、Map的用法與區別
    集合中的對象不按特定的方式排序,並且沒有重複對象。Set接口主要實現了兩個實現類:HashSet:HashSet類按照哈希算法來存取集合中的對象,存取速度比較快TreeSet:TreeSet類實現了SortedSet接口,能夠對集合中的對象進行排序。
  • 10 種創建 DataFrame 的方式,你知道幾個?
    用來連接資料庫,然後進行庫表操作的第三方庫,也需要先安裝import numpy as npimport pandas as pdfrom pandas import Series,DataFrameimport pymysql   # 安裝:pip install pymysql10種方式創建
  • Java List詳解
    2.ArraryListArrayList是一個數組實現的列表,由於數據是存入數組中的,所以它的特點也和數組一樣,查詢很快,但是中間部分的插入和刪除很慢。我們來看幾段關鍵的代碼。如果對線程安全要求不高的話,可以選擇ArrayList,畢竟synchronized也很耗性能4.LinkedList故名思意就是鍊表,和我們大學在數據結構裡學的鍊表是一會事,LinkedList還是一個雙向鍊表。
  • DeepFashion服裝數據集
    數據文件說明下載文件包括:Img - 服裝圖片文件夾 - 共 289,222 張圖片,JPG 格式. 圖片的最長邊 resize 到 300,保持原始圖片的長寬比 aspect ratios.list_bbox.txt - 服裝 bbox 標註 - bbox 標註: [x1, y1, x2, y2],[x1, y1] 左上角位置,[x2, y2] 右下角坐標.
  • 你有沒有做過五種讓你的狗感到不舒服的行為?
    養寵物是一件非常有耐心和細心的事情,人和動物總是不同的,以對待人類的方式養寵物可能不利於寵物的健康,有的主人喜歡和狗開玩笑,假裝扔球,其實只是逗狗,或者把狗單獨關在房間裡,這些行為可能會讓狗感到不舒服,他們只是動物,他們不像人類那樣有情感,他們不知道開玩笑是什麼意思。
  • 水壺水垢怎麼去除 各種水垢去除方法
    水垢怎麼去除方法五:土豆皮鋁壺或鋁鍋使用一段時間後,會結有薄層水垢。將土豆皮放在裡面,加適量水,燒沸,煮10分鐘左右即可除去。不鏽鋼龍頭表面的水垢也可以用土豆皮來擦拭,水垢去除掉,自然變得嶄新光亮了。水垢怎麼去除方法五:熱脹冷縮法將空水壺放在爐上燒乾水垢中的水分,燒至壺底有裂紋或燒至壺底有「嘭」響之時,將壺取下,迅速注入涼水,或用抹布包上提手和壺嘴,兩手握住,將燒乾的水壺迅速坐在冷水中(不要讓水注入壺內)。重複2次至3次,壺底水垢會因熱脹冷縮而脫落。
  • 重複出版愈演愈烈 一個「福爾摩斯」三年出了580種
    中國版本圖書館近日公布了一組數據,根據2013年至2016年8月CIP數據統計顯示,文學、哲學、軍事、歷史、古漢語啟蒙、生物、林業類圖書都有重複出版現象,文學類圖書重複出版數量最多,佔到80.40%。
  • 我常用的兩種數據獲取方式
    作者:xiaoyi     來源:小一的學習筆記財經數據因為其特殊性,數據的獲取方式也比較多樣>最常見的就是通過各類財經網站,像雪球、網易財經、微博財經等都可以獲取到當天的數據,甚至幾天前、幾十天前的數據也都可以通過修改參數拿到。
  • 刪除重複數據離不開這幾個Excel小技巧,趕緊get!
    近期,也有不少會計小夥伴來問老師,能不能出一期快速刪除表格裡重複數據的操作,這不,今天給大家安排了。今天來給大家分享兩種快速刪除重複數據的方法。方法一:直接利用【刪除重複項】的功能快速刪除表格的重複數據。
  • 如何機智剁手黑五?這些美妝護膚網暢銷list你要有!
    張大媽今天接到的任務是:把多個海淘美妝護膚網站安利給大家除了每家去年的黑五折扣力度參考更會列出經典暢銷list有對比地買買買才是理性的剁手者~友情提示:在黑五▷去年黑五力度:全場無門檻75折優惠,優惠力度每小時遞減1%,下手要趁早▷經典暢銷list:Tangle Teezer美發梳和美美噠天使梳、KÉRASTASE卡詩、Benefit貝玲妃、Jurlique茱莉蔻、
  • 墜入愛河的五種方式
    ▲「521」發生的特別方式▲少有人能清醒地墜入愛河,就像沒人能清醒地陷入睡眠一般。這首單曲是Ry X期待已久的首張個人專輯《Dawn》中的第一首歌,曲中講述了五種墜入愛河的不同方式。 在這個最適合戀愛的季節,你會選擇以什麼方式墜入愛河呢?