ArrayList是Java中最常用的集合類型之一。它允許靈活添加多個null元素,重複的元素,並保持元素的插入順序。在編碼時我們經常會遇到那種必須從已建成的ArrayList中刪除重複元素的要求。這篇文章將給出兩種從ArrayList中刪除重複元素的方法。
方法1:使用HashSet刪除ArrayList中重複的元素
在該方法中,我們使用HashSet來刪除重複的元素。如你所知,HashSet不允許有重複的元素。我們使用HashSet的這個屬性來刪除已建成的ArrayList中的重複元素。但是,這種方法有一個缺點。那就是,它會刪除ArrayList中元素的插入順序。這意味着,刪除重複的元素後,元素的插入順序就不對了。先來看下面這個例子。
import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class Test4 { public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add("1"); arrayList.add("2"); arrayList.add("3"); arrayList.add("4"); arrayList.add("1"); arrayList.add("5"); arrayList.add("2"); arrayList.add(null); arrayList.add(null); // 去重前:[1, 2, 3, 4, 1, 5, 2, null, null] System.out.println("去重前:" + arrayList); // 不保證迭代順序 Set<String> set = new HashSet<String>(arrayList); System.out.println("去重後_無序:" + set); } }
輸出:
去重前:[1, 2, 3, 4, 1, 5, 2, null, null] 去重後_無序:[null, 3, 2, 1, 5, 4]
注意輸出結果。你會發現,在刪除重複元素之後,元素重新洗牌。不再按照插入順序排列。如果你想在刪除重複的元素之後依然保持元素的插入順序,那麼不建議使用此方法。還有另一種方法,可以保證在刪除重複的元素之後也不改變元素的插入順序。那就是使用LinkedHashSet。
方法2:使用LinkedHashSet刪除ArrayList中重複的元素
在該方法中,我們使用LinkedHashSet刪除ArrayList中重複的元素。正如你知道的,LinkedHashSet不允許重複元素,同時保持元素的插入順序。LinkedHashSet的這兩個屬性可以確保在刪除ArrayList中的重複元素之後,依然保持元素的插入順序。參見下面的例子。
import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.Set; public class Test4 { public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add("1"); arrayList.add("2"); arrayList.add("3"); arrayList.add("4"); arrayList.add("1"); arrayList.add("5"); arrayList.add("2"); arrayList.add(null); arrayList.add(null); // 去重前:[1, 2, 3, 4, 1, 5, 2, null, null] System.out.println("去重前:" + arrayList); // 保持元素的插入順序 // 去重後_有序:[1, 2, 3, 4, 5, null] Set<String> set = new LinkedHashSet<String>(arrayList); System.out.println("去重後_有序:" + set); } }
輸出:
去重去重前:[1, 2, 3, 4, 1, 5, 2, null, null] 去重後_有序:[1, 2, 3, 4, 5, null]
注意輸出。你可以發現在刪除ArrayList中的重複元素後,依然保持了元素的插入順序。
譯文鏈接:http://www.codeceo.com/article/java-arraylist-remove-duplicate-ele.html
英文原文:How To Remove Duplicate Elements From ArrayList In Java?
翻譯作者:碼農網 – 小峯