2016-03-30 31 views
0

假設我需要比較多個集合並找出哪些是等於或不是。最後,我需要比較多個集合,並創建一個最終集合, 包含從每個集合中獲取的唯一數據。此外,我需要處理所有項目 這是重複在不同的集合。什麼是最適合的數據結構在C#中使用Set#

+0

你是什麼意思「重複在不同的集合」? **(1)**一組可能包含重複項,或**(2)**一組不得包含重複項,但項目可能存在多組。 –

+0

要使用的「最佳」集合完全是上下文相關的。有時'List'最好,有時候是'HashSet',有時'Dictionary'。瞭解他們之間的差異,並決定哪種方式最適合這種情況。 –

回答

4

方法你應該使用System.Collections.Generic.HashSet<T>

你可以創建它想:

var hashSet = new HashSet<T>(IEnumerable<T>)

,然後利用各種方法來比較:

hashSet.SetEquals(IEnumerable<T> list) - 如果HashSet的和列表中包含相同的項目

將返回true

hashSet.Overlaps(IEnumerable<T> list) - 如果HashSet的包含列表

中的一個項目將返回true

hashSet.IsSubsetOf(IEnumerable<T> list) - 如果HashSet的是列表的子集將返回true (順序並不重要)

hashSet.IsProperSubsetOf(IEnumerable<T> list) - 同IsSubsetOf但爲了此事

hashSet.IsSupersetOf(IEnumerable<T> list) - 將漚甕真,如果HashSet的是列表(順序並不重要)

hashSet.IsProperSupersetOf(IEnumerable<T> list)的超集 - 同IsSupersetOf但爲了此事

也有方法來修改:

hashSet.UnionWith(IEnumerable<T> list) - 將修改HashSet的遏制在當前散列集或列表中或兩者中均存在的元素 。

hashSet.symmetricExceptWith(IEnumerable<T> list) - 將修改哈希集以包含僅在當前哈希集或列表中存在的元素,但在兩者中都不存在。

hashSet.IntersectWith(IEnumerable<T> list) - 將修改hashSet以包含當前散列集和列表中存在的元素 。

有關HashSet的詳細信息,請參閱MSDN article

3

可以使用HashSet<T>類,它代表了一組,沒有重複的元素,並公開像IntersectWithUnionWithExceptWith等常見的操作集

相關問題