在c#語言的程式設計開發中,針對list集合的運算有時候需要計算兩個list集合的差集資料,集合的差集是取在該集合中而不在另一集合中的所有的項。a集合針對b集合的差集資料指的是所有在a集合但不在b集合的元素。在c#語言中可以使用except方法來計算兩個list集合的差集資料,簡單快捷只需要一條語句。
except方法的使用格式為:list1.except(list2)。list1和list2代表同一型別的型別的list集合資料
(1)針對值型別的集合資料,如果兩個集合中的元素的值相同,則會被排除。?1
234list<
int
> list1 =
new
list<
int
> ;
list<
int
> list2 =
new
list<
int
> ;
list<
int
> chajilist = list1.except(list2).tolist();
最後運算得到的結果集為:chajilist集合中包含2個元素,為1和2。
(2)針對引用型別,包括使用者自定義的類物件的list集合。判斷差集的依據是判斷元素的物件引用是否相同,如果相同則被排除出去,否則即使所有的物件屬性值一致,也屬於兩個不同的物件,不會被排除。
舉例:list1和list2都是list型別的物件list集合。如果list1和list2新增元素的方式如下:?1
2345
list1.add(
new
testmodel() );
list1.add(
new
testmodel() );
list2.add(
new
testmodel() );
list2.add(
new
testmodel() );
雖然上述兩個語句看起來list1和list2集合的內部元素值全部相同,但list1針對於list2的差集運算:list1.except(list2).tolist()最後得到的結果集中依舊包含index為1和2的兩個物件資料。
關於list集合的差集運算的闡述到此結束,關於list集合的並集和交集運算可以參考:c#使用union方法求兩個list集合的並集資料、c#程式設計中兩個list集合使用intersect方法求交集。
兩個集合求對稱差集
對稱差集,兩個集合的並集,減去交集。比如,集合1,2,3和集合3,3,4,5的對稱差是集合1,2,4,5。想到的解法,將兩個排序,兩個集合分別用兩個工作指標i,j。比較兩個指標指向的元素,相同就都後移,不相同,更小的指標後移。以下 給出了求對稱差集數量的 public static int dist...
No46 python求兩個集合的差集
比如 array diff 1 2,2 2,3 2 1,3 第乙個引數是列表a,第二個引數是列表b遍歷a中的元素,檢查它們是否出現在列表b中,若沒有出現在列表b中,則把這個元素新增到結果列表中。def array diff a,b if len a 0 orlen b 0 return a ret ...
高效求兩個list的差集
查乙個lista 的每個值 string字串 在另外乙個listb中是否存在,如果不存在就記錄下來。模擬資料量 100萬 方法一 直接呼叫list自帶的removeall方法 public static void main string args throws ioexception for int...