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

來源:互聯網
上載者:User

這篇文章將給出兩種從ArrayList中重複資料刪除元素的方法,分別是使用HashSet和LinkedHashSet。

ArrayList是Java中最常用的集合類型之一。它允許靈活添加多個null元素,重複的元素,並保持元素的插入順序。在編碼時我們經常會遇到那種必須從已建成的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中的重複元素後,依然保持了元素的插入順序。

以上就是本文的全部內容,希望對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.