天天看點

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

arraylist是java中最常用的集合類型之一。它允許靈活添加多個null元素,重複的元素,并保持元素的插入順序。在編碼時我們經常會遇

到那種必須從已建成的arraylist中删除重複元素的要求。這篇文章将給出兩種從arraylist中删除重複元素的方法。

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

方法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