如何對list集合物件去重

2021-09-10 07:08:30 字數 558 閱讀 2158

我們知道,list集合是乙個元素有序,可重複的集合,集合中每個元素都有對應的順序索引,我們通過索引進行取值賦值;

那麼,當list集合中的元素為多個屬性組成的物件時,如何對list集合進行去重;

因為物件是在記憶體中開闢一塊區域進行儲存,每個物件的值哪怕相同,但只要是你新new出來的,代表的也是不同的物件,所以我們首先需要在物件中重寫hashcode and equars方法,使屬性值相同的物件指向同乙個位址;然後將list集合的元素放入set集合中,因為set集合是不可重複的,這裡我們用set的addall(list)方法,這樣我們就已經將list集合中的物件元素進行了去重,接著我們需要將set集合重新轉換成list集合,使用list list=new arraylist(set)將set集合轉換成list集合;這樣一來,我們就完成了對元素是物件的list集合進行去重的實現。

簡單來說就是下面三步:

1、在物件中重寫hashcode and equars方法

2、使用set的addall(list);方法去重

3、使用list list=new arraylist(set)將set集合轉換成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 ...

對List中物件的去重

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