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("struts");
//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.linkedhashset;
//constructing linkedhashset using listwithduplicateelements
linkedhashset<string> set = new linkedhashset<string>(listwithduplicateelements);
arraylist after removing duplicate elements :[java, j2ee, jsp, servlets, struts]
注意輸出。你可以發現在删除arraylist中的重複元素後,依然保持了元素的插入順序。
作者:小峰
來源:51cto