Java刪除ArrayList中的重複元素的2種方法
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
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) { //Constructing An ArrayList 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"); //Printing listWithDuplicateElements System.out.print("ArrayList With Duplicate Elements :"); System.out.println(listWithDuplicateElements); //Constructing HashSet using listWithDuplicateElements HashSet<String> set = new HashSet<String>(listWithDuplicateElements); //Constructing listWithoutDuplicateElements using set ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set); //Printing listWithoutDuplicateElements 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) { //Constructing An ArrayList 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"); //Printing listWithDuplicateElements System.out.print("ArrayList With Duplicate Elements :"); System.out.println(listWithDuplicateElements); //Constructing LinkedHashSet using listWithDuplicateElements LinkedHashSet<String> set = new LinkedHashSet<String>(listWithDuplicateElements); //Constructing listWithoutDuplicateElements using set ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set); //Printing listWithoutDuplicateElements 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中的重複元素後,依然保持了元素的插入順序。
譯文連結:http://www.codeceo.com/article/java-arraylist-remove-duplicate-ele.html
英文原文:How To Remove Duplicate Elements From ArrayList In Java?
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 如何刪除ArrayList中的重複元素
- Java ArrayList刪除特定元素的方法Java
- 三種方法刪除列表中重複的元素及效率分析!
- ArrayList元素的刪除(4種函式)函式
- js刪除陣列中重複的元素JS陣列
- js刪除陣列中的重複元素JS陣列
- ES6刪除字串中重複的元素字串
- oracle 刪除重複資料的幾種方法Oracle
- 刪除重複資料的一種高效的方法
- javascript刪除陣列中的重複元素程式碼JavaScript陣列
- Python 中刪除列表元素的三種方法Python
- MYSQL中刪除重複記錄的方法薦MySql
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript陣列刪除重複元素JavaScript陣列
- 演算法刪除單連結串列中重複的元素演算法
- 演算法提高 11-2刪除重複元素演算法
- MySQL刪除表重複記錄的三種方法舉例MySql
- 用SQL語句刪除重複記錄的四種方法SQL
- 83. 刪除排序連結串列中的重複元素(JavaScript版)排序JavaScript
- js利用正規表示式刪除陣列中的重複元素JS陣列
- 力扣-83. 刪除排序連結串列中的重複元素力扣排序
- db2中刪除重複記錄的問題DB2
- JavaScript刪除字串中重複的字元JavaScript字串字元
- SQL Server中刪除重複資料的幾個方法SQLServer
- java陣列中重複元素的去重Java陣列
- javascript刪除陣列中重複元素程式碼例項JavaScript陣列
- db2刪除重複的記錄DB2
- leetcode-刪除排序陣列中的重複項+移除元素LeetCode排序陣列
- 0928面試小節:刪除有序連結串列中的重複元素面試
- 【java】【集合】去除ArrayList中的元素、ArrayList巢狀ArrayListJava巢狀
- javascript刪除陣列重複元素程式碼JavaScript陣列
- Oracle中刪除表中的重複資料Oracle
- 刪除排序陣列中的重複項排序陣列
- Oracle中刪除重複資料的SqlOracleSQL
- mysql 刪除表中重複的資料MySql
- 面試官:怎麼刪除 HashMap 中的重複元素?第 3 種實現思路,99% 的人不會!面試HashMap
- leetcode-82:刪除排序連結串列中重複的元素-iiLeetCode排序