Java刪除ArrayList中的重複元素的2種方法

2021-03-02 藍橋杯


ArrayList是Java中最常用的集合類型之一。它允許靈活添加多個null元素,重複的元素,並保持元素的插入順序。在編碼時我們經常會遇到那種必須從已建成的ArrayList中刪除重複元素的要求。這篇文章將給出兩種從ArrayList中刪除重複元素的方法。

方法1:使用HashSet刪除ArrayList中重複的元素

在該方法中,我們使用HashSet來刪除重複的元素。如你所知,HashSet不允許有重複的元素。我們使用HashSet的這個屬性來刪除已建成的ArrayList中的重複元素。但是,這種方法有一個缺點。那就是,它會刪除ArrayList中元素的插入順序。這意味著,刪除重複的元素後,元素的插入順序就不對了。先來看下面這個例子。

import java.util.ArrayList;import java.util.HashSet;public class MainClass{    public static void main(String[] args)    {                ArrayList<String> listWithDuplicateElements = new ArrayList<String>();        listWithDuplicateElements.add("JAVA");        listWithDuplicateElements.add("J2EE");        listWithDuplicateElements.add("JSP");        listWithDuplicateElements.add("SERVLETS");        listWithDuplicateElements.add("JAVA");        listWithDuplicateElements.add("STRUTS");        listWithDuplicateElements.add("JSP");                System.out.print("ArrayList With Duplicate Elements :");        System.out.println(listWithDuplicateElements);                HashSet<String> set = new HashSet<String>(listWithDuplicateElements);                ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set);                System.out.print("ArrayList After Removing Duplicate Elements :");        System.out.println(listWithoutDuplicateElements);    }}

輸出:

ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP]ArrayList After Removing Duplicate Elements :[JAVA, SERVLETS, JSP, J2EE, STRUTS]

注意輸出結果。你會發現,在刪除重複元素之後,元素重新洗牌。不再按照插入順序排列。如果你想在刪除重複的元素之後依然保持元素的插入順序,那麼不建議使用此方法。還有另一種方法,可以保證在刪除重複的元素之後也不改變元素的插入順序。那就是使用LinkedHashSet。

方法2:使用LinkedHashSet刪除ArrayList中重複的元素

在該方法中,我們使用LinkedHashSet刪除ArrayList中重複的元素。正如你知道的,LinkedHashSet不允許重複元素,同時保持元素的插入順序。LinkedHashSet的這兩個屬性可以確保在刪除ArrayList中的重複元素之後,依然保持元素的插入順序。參見下面的例子。

import java.util.ArrayList;import java.util.LinkedHashSet;public class MainClass{    public static void main(String[] args)    {                ArrayList<String> listWithDuplicateElements = new ArrayList<String>();        listWithDuplicateElements.add("JAVA");        listWithDuplicateElements.add("J2EE");        listWithDuplicateElements.add("JSP");        listWithDuplicateElements.add("SERVLETS");        listWithDuplicateElements.add("JAVA");        listWithDuplicateElements.add("STRUTS");        listWithDuplicateElements.add("JSP");                System.out.print("ArrayList With Duplicate Elements :");        System.out.println(listWithDuplicateElements);                LinkedHashSet<String> set = new LinkedHashSet<String>(listWithDuplicateElements);                ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set);                System.out.print("ArrayList After Removing Duplicate Elements :");        System.out.println(listWithoutDuplicateElements);    }}

輸出:

ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP]ArrayList After Removing Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, STRUTS]

注意輸出。你可以發現在刪除ArrayList中的重複元素後,依然保持了元素的插入順序。

相關焦點

  • java數組刪除重複元素專題及常見問題 - CSDN
    package com.akfucc.zhidao;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List
  • 每日一課 | Java 中如何將 ArrayList 與 HashSet 互相轉換?
    import java.util.HashSet;import java.util.List;import java.util.Set; public class ConvertListToSetSystem.out.println("List values ");      List<String> list = new ArrayList<String>();        list.add("1");        list.add("2"
  • 教你如何刪除Java字符串中的重複字符
    Java刪除字符串中的重複字符【問題描述】刪除字符串中的重複字符.【輸入形式】輸入一個字符串,全為字母字符【輸出形式】輸出刪除重複字符後的字符串【樣例輸入】abbcbd【樣例輸出】abcd【樣例說明】刪除第二個和第三個「b」,保留第一個遇到的不同字符/*【問題描述】刪除字符串中的重複字符.
  • 你真的了解ArrayList麼?
    1,ArrayList的簡介2,ArrayList的源碼分析2.1,ArrayList的數據結構2.2,類中的屬性2.2,ArrayList的構造函數2.3,核心方法2.3.1,add()方法2.3.2,add(int index, E element),在特定位置添加元素2.3.3,remove(int)方法2.3.4,remove(Object)2.3.5,clear()方法
  • Excel工作表中,刪除重複數據的2種方法解讀,高效且實用!
    在實際的工作中,經常要對工作表中重複的數據進行刪除,如若數據行只有幾條,則可通過人工查找出來,如若數據行較多,這種方法就費時費力,而且容易出錯,造成對表格數據的準確性和個人能力的懷疑
  • 跟我學java編程—List接口實現類ArrayList
    由於 List 的元素在存儲時互不幹擾,沒有什麼依賴關係,因此List集合接口可以存儲重複的元素,Set集合接口不允許存儲重複的元素。List集合接口除了繼承Collection的接口方法外,還提供了關於元素查詢、在指定位置添加元素等操作。下面分類列出予以說明。
  • PHP如何刪除數組中的重複元素 - php中文網
    在PHP中可以使用內置函數array_unique()來直接刪除重複元素,也可以使用array_flip()函數來間接刪除重複元素。1.array_unique()函數array_unique()函數可以移除數組中的重複的值,並返回結果數組;當幾個數組元素的值相等時,只保留第一個元素,其他的元素被刪除。代碼示例:<?
  • Java基礎知識:集合之ArrayList
    ```   ArrayList 是一個動態數組,它是線程不安全的,允許元素為null。其底層數據結構依然是數組,它實現了List<E>, RandomAccess, Cloneable, java.io.Serializable接口,其中RandomAccess代表了其擁有隨機快速訪問的能力,ArrayList可以以O(1)的時間複雜度去根據下標訪問元素。
  • Excel中刪除重複數據的4種方法分享,快點學習吧
    今天給大家分享的是刪除重複值數據的幾種方法,我們在實際工作中經常會遇到錄入的數據內容重複的現象,那如何實現重複值的快速刪除呢,今天給大家分享4種方法,讓你再遇到類似的情況不再發愁。數據示例如下:方法一、 數據-刪除重複項這種方法是我們經常使用的,操作也很簡單,首先選中需要刪除重複值的數據區域,點擊菜單欄中【數據】-【刪除重複項】即可。可以看到重複的內容已經全部刪除了。
  • ArrayList,基於數組實現的有序列表
    第三種情況使用Iterator自身刪除數據:正確,在while iterator或foreach中,實用iterator add remove arraylist中的數據import java.util.ArrayList;import java.util.Iterator;import java.util.List;public
  • JAVA多線程 集合同步
    經典做法在迭代開始之前,使用synchronized手動同步所有針對List的修改操作(增加、刪除),保證迭代期間沒有線程修改List。此方法需要明確各個方法的同步,考慮的因素很多,不建議使用。B.特別注意:不要通過迭代器iterator自己的方法(比如add(), set(), remove())去修改集合CopyOnWriteArrayList中的元素,這會引起拋出UnsupportedOperationException異常。2.
  • Java集合源碼剖析——ArrayList源碼剖析
    無參構造方法構造的ArrayList的容量默認為10,帶有Collection參數的構造方法,將Collection轉化為數組賦給ArrayList的實現數組elementData。2、注意擴充容量的方法ensureCapacity。ArrayList在每次增加元素(可能是1個,也可能是一組)時,都要調用該方法來確保足夠的容量。
  • 高效刪除Oracle中重複數據的方法
    【IT168 技術文章】       在對資料庫進行操作過程中我們可能會遇到這種情況,表中的數據可能重複出現,使我們對資料庫的操作過程中帶來很多的不便,那麼怎麼刪除這些重複沒有用的數據呢?
  • Python list列表刪除元素(4種方法)
    在 Python 列表中刪除元素主要分為以下 3 種場景:根據目標元素所在位置的索引進行刪除,可以使用 del 關鍵字或者 pop
  • EXCEL刪除重複項的3種方法,你知道幾種?
    現在,我們通過EXCEL軟體,就可以使用3種方法,輕鬆找出重複的數據,我們今天一起來學習一下吧!方法1:刪除重複值 在下表中,王一、張四兩個同學的信息都重複出現,這裡我用顏色標記出來了,方便大家識別。操作步驟:1、先選中表格區域,依次點擊【數據】選項——【刪除重複值】,即可彈出刪除重複值的對話框。
  • 面試題:Java容器之ArrayList全解析
    2、ArrayList具有數組所具有的特性、通過索引支持隨機訪問、所以通過隨機訪問ArrayList中的元素效率非常高、但是執行插入、刪除時效率比較地下、具體原因後面有分析。2.實例及分析如下代碼中,在遍歷List時,調用了remove方法,刪除元素a//arrayList中的值為 [a,a,c,a,a]for (int i = 0; i < arrayList.size(); i++) { if (arrayList.get(i) == "a") { arrayList.remove
  • java 基礎 之 集合ArrayList和Vector
    今天我們繼續學習集合中的其他數據類型。今天我們主要看下線性表。在java中的線性表是如何實現的呢。
  • 為什麼阿里巴巴要求謹慎使用ArrayList中的subList方法
    集合是Java開發日常開發中經常會使用到的。在之前的一些文章中,我們介紹過一些關於使用集合類應該注意的事項,如《為什麼阿里巴巴禁止在 foreach 循環裡進行元素的 remove/add 操作》、《為什麼阿里巴巴建議集合初始化時,指定集合容量大小》等。
  • java基礎-遇見ArrayList集合
    new ArrayList<String>();// 添加元素 array.add("hello"); array.add("world"); array.add("java");// public boolean remove(Object o):刪除指定的元素,返回刪除是否成功 System.out.println(array.remove
  • 刪除數據重複項,Excel中的這3種方法簡單高效
    種種原因造成數據表中的數據存在重複現象, 刪除重複數據是數據清洗的首要任務。今天,就給大家分享3種方法,以幫助大家快速刪除Excel中的重複數據。刪除重複項是 Excel 提供的數據去重功能, 可以快速刪除重複項, 具體操作步驟如下。步驟 01 執行刪除重複值命令。