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

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?
翻譯作者:碼農網 – 小峯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章