List物件去重碎碎念之神叨叨

2022-01-17 08:10:20 字數 2350 閱讀 5372

前言

list集合操作去除重複資料的這種情況經常會碰到,裡面也有很多大神們做過,在這裡主要是借鑑然後自己整理了一下,主要是為了方便自己,以後再次碰到這種去重問題,直接開啟自己的鏈結拿起鍵盤就是幹,,,,

一、方法一

利用hashset去重,在實體類裡重寫equals和gethashcode方法

class

program

,new userinfo()

};//因為我們通常操作的是list集合,所以我在這裡把list轉成了hashset型別來接受

hashseths = new hashset(list);

foreach (var item in

hs) username:");

}console.readkey();

}class

userinfo

public

string username

public

override

bool equals(object

obj)

public

override

intgethashcode()}}

二、方法二利用拉姆達表示式distinct方法,我們轉到定義可以看到兩個過載的distinct方法,如圖

我們再轉到定義看看iequalitycomparer介面裡面到底是個啥玩意,原來有兩個方法

這時候我們來實現iequalitycomparer介面裡面的方法

class

program

,new userinfo()

};list.distinct(

new distinctcompare()).tolist().foreach(item => username:");

});console.readkey();

}class

userinfo

public

string username

}class distinctcompare : iequalitycomparer

public

intgethashcode(userinfo obj)}}

我們再來寫乙個通用的擴充套件方法

幫助類

public

static

class

distincthelper

}public

class compare: iequalitycomparer

public

bool

equals(t x, t y)

public

intgethashcode(t obj)

}

實現

class

program

,new userinfo()

};list.distinctex(x => x.id).tolist().foreach(item => username:");

});console.readkey();

}class

userinfo

public

string username }}

三、方法三利用拉姆達表示式一句話即可

class

program

,new userinfo()

};//用拉姆達表示式一句話即可實現去重

var result = list.where((x,i)=>list.findindex(y=>y.id==x.id)==i);

result.tolist().foreach(item=> username:");

});console.readkey();

}class

userinfo

public

string username }}

權責申明本文版權歸作者和共有,歡迎**,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】,希望能夠持續的為大家帶來好的技術文章!想跟我一起進步麼?那就【關注】我吧。

三重積分先二後一和先一后二的碎碎念

提到三重積分,伴隨著的常常是這兩種積分的策略。你看因為是三重,所以可以拆分成不均勻的兩部分,二重積分裡怎麼拆都是先一后一對吧 本篇文章的起因是我自以為這兩個概念分的蠻清晰了,但是今天卻把先一后二與截面法聯絡在一起了,嚇得我趕緊複習這部分的知識點,溫故知新。還想再從巨集觀的角度,總結一次積分到三重積分...

對List中物件的去重

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

如何對list集合物件去重

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