求兩個集合的差集

2022-02-26 10:55:11 字數 1380 閱讀 4109

在c#語言的程式設計開發中,針對list集合的運算有時候需要計算兩個list集合的差集資料,集合的差集是取在該集合中而不在另一集合中的所有的項。a集合針對b集合的差集資料指的是所有在a集合但不在b集合的元素。在c#語言中可以使用except方法來計算兩個list集合的差集資料,簡單快捷只需要一條語句。

except方法的使用格式為:list1.except(list2)。list1和list2代表同一型別的型別的list集合資料

(1)針對值型別的集合資料,如果兩個集合中的元素的值相同,則會被排除。?1

234list<int> list1 =newlist<int> ;

list<int> list2 =newlist<int> ;

list<int> chajilist = list1.except(list2).tolist();

最後運算得到的結果集為:chajilist集合中包含2個元素,為1和2。

(2)針對引用型別,包括使用者自定義的類物件的list集合。判斷差集的依據是判斷元素的物件引用是否相同,如果相同則被排除出去,否則即使所有的物件屬性值一致,也屬於兩個不同的物件,不會被排除。

舉例:list1和list2都是list型別的物件list集合。如果list1和list2新增元素的方式如下:?1

2345

list1.add(newtestmodel() );

list1.add(newtestmodel() );

list2.add(newtestmodel() );

list2.add(newtestmodel() );

雖然上述兩個語句看起來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...