HashSet
HashSet 类
定义
命名空间: System.Collections.Generic
程序集: System.Collections.dll
类型参数
T(哈希集中的元素类型)
注释
类 HashSet
元素唯一,不重复,区分大小写
不能使用下标来访问元素(for循环不可使用)
备注:
HashSetIReadOnlyCollection 实现从 .NET Framework 4.6 开始的 接口;在早期版本的 .NET Framework中HashSet , 类未实现此接口。
HashSet
HashSet
集合HashSet
HashSet
HashSet 操作 | 数学等效项 |
---|---|
UnionWith | 联合或集添加 |
IntersectWith | 交叉 口 |
ExceptWith | 设置减法 |
SymmetricExceptWith | 对称差异 |
仅.NET Framework: 对于非常大HashSet
从 .NET Framework 4 开始, HashSet
HashSet 和 LINQ Set 运算
LINQ 集操作和 HashSet
HashSet 操作 | LINQ 等效项 |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
未提供。 | Distinct |
SymmetricExceptWith | 未提供。 |
Overlaps | 未提供。 |
IsSubsetOf | 未提供。 |
IsProperSubsetOf | 未提供。 |
IsSupersetOf | 未提供。 |
IsProperSupersetOf | 未提供。 |
SetEquals | 未提供。 |
HashSet 的优势和与 List 的比较
HashSet
在内部算法实现上,HashSet
这里的方法复杂度就是 时间复杂度 和 空间复杂度 的综合评定,时间复杂度 和 空间复杂度怎么定义,可以百度一下,这里不做讲解
所以在集合的目的是为了检索的情况下,我们应该使用 HashSet
代码展示
#region 添加元素 Console.WriteLine("1. 添加元素 \r\n "); var set = new HashSet<string>(); // Add 方法会返回 bool值,添加数据时,如果集合中已经存在,则忽略这次操作,并返回false // 无法添加不同数据类型的元素 // set.Add(8); set.Add("a"); set.Add("b"); set.Add("c"); set.Add("d"); set.Add("A"); FHashSet(set); // 打印元素 SignLine(); // 分割线 #endregion #region 检查元素是否存在 Console.WriteLine("2. 集合中是否存在 a 元素?"); if (set.Contains("a")) Console.WriteLine("是"); else Console.WriteLine("否"); SignLine(); #endregion #region 将当前集合的容量设置为它包含的实际元素数 Console.WriteLine("将当前集合的容量设置为它包含的实际元素数: \r\n"); var set2 = new HashSet<string>(10); set2.Add("A"); set2.Add("B"); set2.Add("C"); set2.TrimExcess(); SignLine(); #endregion #region 移除当前集合中包含指定集合的元素 Console.WriteLine("移除当前集合中包含指定集合的元素: \r\n"); string[] strs = { "a", "b" }; set.ExceptWith(strs); FHashSet(set2); SignLine(); #endregion #region 修改为两个集合之间的交集 Console.WriteLine("修改为两个集合之间的交集: \r\n"); string[] str2 = { "异", "A", "B", "C", "E", "E" }; set.IntersectWith(str2); FHashSet(set); SignLine(); #endregion #region 修改为两个集合之间的并集 Console.WriteLine(" 6.修改为两个集合之间的并集: \r\n"); Console.WriteLine(" set : A, B, C, E, D 长度:{0}", set.Count); Console.WriteLine(" set2: 1, A, 2, B 长度:{0}", set2.Count); set.UnionWith(set2); FHashSet(set); #endregion
结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类