在C#中使用集合的最佳拟合数据结构是什么

时间:2016-03-30 14:20:57

标签: c# .net

假设我需要比较多个集合并找出哪些是等于或等于。

最后,我需要比较多个集并创建一个最终集, 从每组中获取唯一数据。我还需要处理所有物品 它们在不同的集合中重复。

2 个答案:

答案 0 :(得分:4)

您应该使用System.Collections.Generic.HashSet<T>

您可以创建它:

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

然后使用方法进行比较:

hashSet.SetEquals(IEnumerable<T> list) - 如果hashSet和list包含相同的项

,则返回true

hashSet.Overlaps(IEnumerable<T> list) - 如果hashSet包含list

中的一个项,则返回true

hashSet.IsSubsetOf(IEnumerable<T> list) - 如果hashSet是列表的子集,则返回true(命令不重要)

hashSet.IsProperSubsetOf(IEnumerable<T> list) - 与IsSubsetOf相同,但订购事项

hashSet.IsSupersetOf(IEnumerable<T> list) - 如果hashSet是列表的超集,则返回true(命令不重要)

hashSet.IsProperSupersetOf(IEnumerable<T> list) - 与IsSupersetOf相同,但订购事项

还有修改方法:

hashSet.UnionWith(IEnumerable<T> list) - 将修改hashSet以包含存在的元素 在当前的hashSet或列表中或两者中。

hashSet.symmetricExceptWith(IEnumerable<T> list) - 将修改hashSet以包含仅存在的元素 在当前的hashSet或列表中,但不在两者中。

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

有关HashSet的详细信息,请参阅MSDN article

答案 1 :(得分:3)

您可以使用HashSet<T>类,它代表一组没有重复的元素,并公开IntersectWithUnionWithExceptWith等方法用于公共集合操作