编辑
2025-09-22
C#
00

目录

创建 HashSet
添加元素
删除元素
检查元素是否存在
遍历 HashSet
HashSet 的操作
并集(Union)
交集(Intersect)
差集(Except)
对称差集(SymmetricExcept)
性能注意事项
示例:使用 HashSet 过滤重复元素
总结
中使用 HashSet 有了一定的了解。

在 C# 中,集合是一种非常重要的数据结构,它用于存储一组唯一的元素。HashSet<T> 是一种基于哈希表的集合数据结构,它提供了高效的元素查找、添加和删除操作。HashSet<T> 是无序的,并且不允许重复的元素,这使得它在某些场景下非常有用。

创建 HashSet

要创建一个 HashSet,您需要引入 System.Collections.Generic 命名空间:

C#
using System.Collections.Generic; // 创建一个空的 HashSet HashSet<int> numbers = new HashSet<int>();

添加元素

使用 Add 方法向 HashSet 中添加元素:

C#
namespace AppHashSet { internal class Program { static void Main(string[] args) { // 创建一个空的 HashSet HashSet<int> numbers = new HashSet<int>(); numbers.Add(1); numbers.Add(2); numbers.Add(3); // 尝试添加重复的元素,将不会被添加到集合中 bool isAdded = numbers.Add(2); // 返回 false,因为 2 已经存在 // 输出numbers中的元素 foreach (int number in numbers) { Console.WriteLine(number); } } } }

image.png

删除元素

使用 Remove 方法从 HashSet 中删除元素:

C#
bool isRemoved = numbers.Remove(2); // 返回 true,如果元素存在并且被移除

检查元素是否存在

使用 Contains 方法检查 HashSet 中是否包含某个元素:

C#
bool contains = numbers.Contains(2); // 返回 false,因为 2 已经被移除

遍历 HashSet

使用 foreach 循环遍历 HashSet 中的元素:

C#
foreach (int number in numbers) { Console.WriteLine(number); }

HashSet 的操作

HashSet<T> 提供了一些强大的集合操作,例如并集、交集、差集和对称差集。

并集(Union)

C#
namespace AppHashSet { internal class Program { static void Main(string[] args) { HashSet<int> setA = new HashSet<int> { 1, 2, 3 }; HashSet<int> setB = new HashSet<int> { 3, 4, 5 }; setA.UnionWith(setB); // setA 现在包含 { 1, 2, 3, 4, 5 } // 输出结果 foreach (int num in setA) { Console.WriteLine(num); } } } }

image.png

交集(Intersect)

C#
setA.IntersectWith(setB); // setA 现在包含 { 3 }

差集(Except)

C#
setA.ExceptWith(setB); // setA 现在包含 { 1, 2 },因为这些元素在 setB 中不存在

对称差集(SymmetricExcept)

C#
setA.SymmetricExceptWith(setB); // setA 现在包含 { 1, 2, 4, 5 },因为这些元素只在一个集合中存在

image.png

性能注意事项

HashSet<T> 在处理大量数据时通常比 List<T> 更高效,因为它使用哈希表来存储元素,这意味着它的添加、删除和查找操作的平均时间复杂度为 O(1)。然而,这种效率是以牺牲顺序和重复元素为代价的。

示例:使用 HashSet 过滤重复元素

假设我们有一个整数数组,我们想要移除所有重复的元素。

C#
namespace AppHashSet { internal class Program { static void Main(string[] args) { int[] numbersArray = { 1, 2, 3, 2, 4, 5, 5, 6, 1 }; HashSet<int> uniqueNumbers = new HashSet<int>(numbersArray); foreach (int number in uniqueNumbers) { Console.WriteLine(number); } } } }

image.png

在这个例子中,我们使用 HashSet 的构造函数直接从数组中创建了一个集合,自动移除了所有重复的元素。然后我们遍历这个集合,打印出唯一的元素。

总结

HashSet<T> 是 C# 中一个非常有用的集合类,适用于需要存储唯一元素集合的场景。它提供了丰富的集合操作方法,可以很方便地进行并集、交集、差集和对称差集等操作。在处理大量数据时,HashSet<T> 通常比其他集合类型更高效。通过上面的例子和说明,您应该对如何在 C# 中使用 HashSet 有了一定的了解。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!