C#数据结构 HashSet 用法

原文链接:https://www.cnblogs.com/jk-2048/p/18030587

https://blog.csdn.net/xiongyanglai/article/details/136473932

1、所属命名空间

.NET 3.5在 System.Collections.Generic 命名空间中包含一个新的集合类:HashSet
这个集合类包含不重复项的无序列表称作HashSet。(类似C++的unordered_set?)
这个集合基于散列hash值,插入元素的操作非常快,不需要像List类那样重排集合。

2、操作函数表

Add重载:
Hashset还提供了另一个Add()方法重载。它返回一个布尔值,说明是否添加了元素。如果该元素已经在集中,就不添加它,并返回false。

 

以下代码优化:

1
2
3
4
if (dto.EkorgCode == "1" || dto.EkorgCode == "2" || dto.EkorgCode == "3" || dto.EkorgCode == "4")
{
     
}

优化后:

1
2
3
4
5
6
7
// 定义EkorgCode的集合 
var ekorgCodes = new HashSet<string> { "1", "2", "3", "4" }; 
 
// 检查dto的EkorgCode是否在ekorgCodes集合中 
if (ekorgCodes.Contains(dto.EkorgCode)) 
}

  

总结
HashSet 是C#中的一个集合类,它位于 System.Collections.Generic 命名空间中。HashSet 实现了 ISet 接口,并且是一个无序的集合,它不允许有重复的元素。HashSet 使用哈希算法来存储和检索元素,这意味着查找、添加和删除操作通常具有接近O(1)的平均时间复杂度,这是非常高效的。

下面是HashSet的一些主要特点和用法:

特点
无序性:HashSet不保证元素的顺序,也就是说,元素的插入顺序可能与遍历时的顺序不同。

唯一性:HashSet不允许有重复的元素。尝试添加一个已经存在的元素将不会有任何效果。

高性能:由于使用哈希表作为内部数据结构,HashSet提供了非常快速的查找、添加和删除操作。

不支持索引:由于是无序的,HashSet不支持通过索引来访问元素。

线程不安全:HashSet不是线程安全的,如果在多线程环境中使用,需要额外的同步措施

基本示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System; 
using System.Collections.Generic; 
   
class Program 
    static void Main() 
    
        // 创建一个HashSet<int>的实例 
        HashSet<int> numbers = new HashSet<int>(); 
   
        // 向HashSet中添加元素 
        numbers.Add(1); 
        numbers.Add(2); 
        numbers.Add(3); 
   
        // 尝试添加一个已经存在的元素,不会有任何效果 
        numbers.Add(2); 
   
        // 检查一个元素是否在HashSet中 
        bool containsFour = numbers.Contains(4); // 返回false,因为4不在集合中 
   
        // 遍历HashSet中的所有元素 
        foreach (int number in numbers) 
        
            Console.WriteLine(number); 
        
   
        // 移除一个元素 
        numbers.Remove(1); 
   
        // 清除所有元素 
        numbers.Clear(); 
    
}

  

posted @   yinghualeihenmei  阅读(1355)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示