對List去重並保證新增順序主要有三種方式

2021-08-31 23:42:05 字數 1237 閱讀 4815

方式一,利用hashset不能新增重複資料的特性 由於hashset不能保證新增順序,所以只能作為判斷條件:

private

static

void

removeduplicate(listlist)

}list.clear();

list.addall(result);

}

方式二,利用linkedhashset不能新增重複資料並能保證新增順序的特性 :

private

static

void

removeduplicate(listlist)

方式三,利用list的contains方法迴圈遍歷:

private

static

void

removeduplicate(listlist)

}list.clear();

list.addall(result);

}

準備測試程式:

private

static

void

main(string args)long time = system.currenttimemillis();

for (int i = 0; i < 10000; i++)

long time1 = system.currenttimemillis();

system.out.println("time1:"+(time1-time));

for (int i = 0; i < 10000; i++)

long time2 = system.currenttimemillis();

system.out.println("time2:"+(time2-time1));

for (int i = 0; i < 10000; i++)

long time3 = system.currenttimemillis();

system.out.println("time3:"+(time3-time2));

結果為:

time1:329

time2:292

time3:17315

總結:從便捷以及效率上,方式二是最佳選擇,具體原因可以參考hashmap的儲存方式

對List中物件的去重

今天專案中遇到了乙個對list中物件去重的問題。首先對於我們自己系統中的物件我們只要重寫該物件的 equal 和 hashcode 即可 利用物件中的能夠唯一確定物件的屬性 但是我遇到的不是本系統的物件,而是另乙個系統中的物件,我本身是無法對其進行重寫的。我的處理方法是遍歷list,利用map un...

如何對list集合物件去重

我們知道,list集合是乙個元素有序,可重複的集合,集合中每個元素都有對應的順序索引,我們通過索引進行取值賦值 那麼,當list集合中的元素為多個屬性組成的物件時,如何對list集合進行去重 因為物件是在記憶體中開闢一塊區域進行儲存,每個物件的值哪怕相同,但只要是你新new出來的,代表的也是不同的物...

對List中物件的去重

今天專案中遇到了乙個對list中物件去重的問題。首先對於我們自己系統中的物件我們只要重寫該物件的 equal 和 hashcode 即可 利用物件中的能夠唯一確定物件的屬性 但是我遇到的不是本系統的物件,而是另乙個系統中的物件,我本身是無法對其進行重寫的。我的處理方法是遍歷list,利用mapniq...