List集合去重方式及效率對比

2021-09-09 02:25:21 字數 2340 閱讀 5976

list集合相信大家在開發過程中幾乎都會用到。有時候難免會遇到集合裡的資料是重複的,需要進行去除。然而,去重方式有好幾種方式,你用的是哪種方式呢?去重方式效率是否是最高效、最優的呢?今天就給大家講解一下list集合去重的常見及常用的四種方式。

01

實現思路:使用兩個for迴圈遍歷集合所有元素,然後進行判斷是否有相同元素,如果有,則去除。這種方式是大部分最先想到的,也是最簡單的實現方式。其中,這種方式可以保證list集合原來的順序不變。

**實現:

/**

* notes:使用兩個for迴圈實現list去重

* @param list

* @return

*/public static list repeatlistwayone(listlist)}}

return list;

}

02

實現思路:我們知道hashset實現了set介面,不允許出現重複元素。可以基於這個想法,把list集合所有元素存入hashset物件,接著把list集合元素全部清空,最後把hashset物件元素全部新增至list集合中,這樣就可以保證不出現重複元素。而hashset有乙個建構函式,在初始化時可以直接新增元素。其中,hashset不能保證順序不變,所以此方式不能保證list集合原來的順序不變。

**實現:

/**

* notes:使用hashset實現list去重

* @param list

* @return

*/public static list repeatlistwaytwo(listlist)

03

實現思路:treeset集合也是實現set介面,是乙個有序的,並且無重複元素集合。同理,我們可以根據上面方式二的思想進行去重。其中,去重後的list集合可以保證和原來的順序一致。

**實現:

/**

* notes:使用treeset實現list去重

* @param list

* @return

*/public static list repeatlistwaythird(listlist)

04

實現思路:利用list集合contains方法迴圈遍歷,先建立新的list集合,接著迴圈遍歷原來的list集合,判斷新集合是否包含有舊集合,如果有,則不新增至新集合,否則新增。最後,把舊集合清空,把新集合元素賦值給舊集合。

**實現:

/**

* notes:利用list集合contains方法迴圈遍歷去重

* @param list

* @return

*/public static list repeatlistwayfourth(listlist)

}//把list集合所有元素清空

list.clear();

//把新集合元素新增至list集合

list.addall(newlist);

return list;

}

上面給大家介紹了四種list集合去重方式。那麼,哪種方式效率是最好的呢?下面就演示一下進行對比。

/**

* 隨機生成0-500之間的20000個整數字串,並存入list集合

* @return

*/public static listgetrandomlist()

return list;

}

為了保證list集合元素一致,建立四個list集合,分別對應list去重方式。效率對比**如下:

public static void main(string args)
多次執行結果如下:

第一次四種方式執行時間如下:223、10、16、30;

第二次四種方式執行時間如下:164、10、17、43;

第三次四種方式執行時間如下:164、9、16、37;

綜合**及執行時間對比,方式二是最好的去重方式,**最簡潔、耗時最短,但是順序可能會被打亂,如果需要按原順序,方式三比較好。你平時list集合去重,方式用對了嗎?

java List去重方式及效率對比

對list去重並保證新增順序主要有三種方式 方式一,利用hashset不能新增重複資料的特性 由於hashset不能保證新增順序,所以只能作為判斷條件 private static void removeduplicate listlist list.clear list.addall result...

java List去重方式及效率對比

對list去重並保證新增順序主要有三種方式 方式一,利用hashset不能新增重複資料的特性 由於hashset不能保證新增順序,所以只能作為判斷條件 private static void removeduplicate list string list list clear list addal...

List去重的三種方式及效率對比

對list去重並保證新增順序主要有三種方式 方式一,利用hashset不能新增重複資料的特性 由於hashset不能保證新增順序,所以只能作為判斷條件 private static void removeduplicate listlist list.clear list.addall result...