比較兩個集合是否相等,而不論它們中項的順序如何我想比較兩個集合(在C#中),但我不確定有效實現(xiàn)這一點的最佳方法。我讀過另一篇關于數(shù)列相等但這不是我要找的。在我的例子中,如果兩個集合都包含相同的項(不管順序如何),那么兩個集合是相等的。例子:collection1 = {1, 2, 3, 4};collection2 = {2, 4, 1, 3};collection1 == collection2; // true我通常做的是循環(huán)遍歷一個集合的每個項,看看它是否存在于另一個集合中,然后循環(huán)遍歷另一個集合的每個項,并查看它是否存在于第一個集合中。(我首先比較長度)。if (collection1.Count != collection2.Count)
return false; // the collections are not equalforeach (Item item in collection1){
if (!collection2.Contains(item))
return false; // the collections are not equal}foreach (Item item in collection2){
if (!collection1.Contains(item))
return false; // the collections are not equal}return true; // the collections are equal然而,這并不完全正確,而且它可能不是比較兩個集合是否相等的最有效的方法。我能想到的一個例子是,這是錯誤的:collection1 = {1, 2, 3, 3, 4}collection2 = {1, 2, 2, 3, 4}這和我的實施是一樣的。我應該只計算找到每一項的次數(shù)并確保兩個集合中的計數(shù)相等嗎?這些例子都是在某種C#中(讓我們稱之為偽C#),但是用您想要的語言給出答案并不重要。注:為了簡單起見,我在示例中使用了整數(shù),但我也希望能夠使用引用類型的對象(它們不能正確地作為鍵運行,因為只比較了對象的引用,而不是內容)。
請教,比較兩個集合是否相等,而不論它們中項的順序如何
不負相思意
2019-10-20 16:12:17