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集合,判斷新集合是否包含有舊集合,如果有,則不新增至新集合,否則新增。最後,把舊集合清空,把新集合元素賦值給舊集合。**實現:
第一次四種方式執行時間如下:223、10、16、30;
第二次四種方式執行時間如下:164、10、17、43;
第三次四種方式執行時間如下:164、9、16、37;
綜合**及執行時間對比,方式二是最好的去重方式,**最簡潔、耗時最短。你平時list集合去重,方式用對了嗎?
List集合去重
第一種 list每remove掉乙個元素以後,後面的元素都會向前移動,此時如果執行i i 1,則剛剛移過來的元素沒有被讀取。string str1 newstring abcde1 string str2 newstring abcde2 string str3 newstring abcde3 s...
List集合去重
首先,我們都知道list集合是乙個儲存有序可重複元素的容器,那麼如果要對乙個list去重有哪些方法呢?方式一 迴圈list中的所有元素然後刪除重複 public static list removeduplicate list list return list public static list ...
c 物件集合去重 C List集合去重操作注意點
今天除錯 時發現list的distinct方法在對引用型別操作時並沒有去重,後來查閱資料發現list去重操作物件集合時比較的是物件的乙個個引用位址,因為集合裡的物件都是乙個個單獨的例項,所以並不會把內容相同的元素去掉,要想真正去重還是要自己寫方法篩選,但是值型別集合的就可以直接操作,包括unoin,...