LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 集(HashSet)

admin
2025年3月23日 7:45 本文热度 175

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

创建 HashSet

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

using System.Collections.Generic;

// 创建一个空的 HashSet
HashSet<int> numbers = new HashSet<int>();

添加元素

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

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);
            }
        }
    }
}

删除元素

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

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

检查元素是否存在

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

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

遍历 HashSet

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

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

HashSet 的操作

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

并集(Union)

namespace AppHashSet
{
    internal class Program
    {

        static void Main(string[] args)
        
{
            HashSet<int> setA = new HashSet<int> { 123 };
            HashSet<int> setB = new HashSet<int> { 345 };

            setA.UnionWith(setB); // setA 现在包含 { 1, 2, 3, 4, 5 }

            // 输出结果
            foreach (int num in setA)
            {
                Console.WriteLine(num);
            }
        }
    }
}

交集(Intersect)

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

差集(Except)

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

对称差集(SymmetricExcept)

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

性能注意事项

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

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

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

namespace AppHashSet
{
    internal class Program
    {

        static void Main(string[] args)
        
{
            int[] numbersArray = { 123245561 };
            HashSet<int> uniqueNumbers = new HashSet<int>(numbersArray);

            foreach (int number in uniqueNumbers)
            {
                Console.WriteLine(number);
            }
        }
    }
}

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

总结

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


阅读原文:原文链接


该文章在 2025/3/24 16:49:58 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved