特投网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

(站外) 特投工作室

查看: 5509|回复: 0

C# HashSet集合类型使用介绍

[复制链接]

2569

主题

1018

回帖

6万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
69667
QQ
发表于 2016-5-27 15:06:38 | 显示全部楼层 |阅读模式
1.HashSet集合
HashSet是以数学Set集合为基础的,使用HashSet可以提高集合的运算。使用HashSet集合不自带排序方法,如果需要排序的需求可以参考使用List<T>集合配合Sort方法。
HashSet的优势在与运算快,作为一种存放在内存的数据,可以很快的进行设置和取值的操作。HashSet无法向里面添加重复的数据,避免添加HashSet<T>里面的数据重复。我们使用HashSet常常在集合相加集合相减这些集合与集合之间的操作之中。
使用HashSet作为内存存储的快速数据库,这个需要随时跟新HashSet里面的数据,因为在HashSet中一个长时间未被访问的数据,将被系统自动回收掉,那么就会导致失败,那么如何才能保证HashSet里面的值是长存在的而且达到不断的更新里面的值呢?
首先程序过来访问我们HashSet里面有没有需要的数据,如果有我们需要的数据就直接返回给用户,不用调用查询数据库的操作。如果HashSet里面没有我们需要的数据,程序再去查询一次数据库是否有该Query数据,如果有返回给用户同时把查询的结果添加到HashSet里面,这么做可以一定程度的降低查询数据库所带来的不便,但是不能根除,需要进一步提升性能,可以查看前面的缓存策略使用memcached来提高网站查询和访问。
1.1.我们要求两个集合的并集
[csharp] view plain copy 在CODE上查看代码片派生到我的代码片
HashSet<int> numbers1;  
HashSet<int> numbers2;  
//分别进行numbers1和numbers2的值初始化或赋值  
numbers1.UnionWith(numbers2);//求两个集合的并集。  

1.2.求两个集合的交集
[csharp] view plain copy 在CODE上查看代码片派生到我的代码片
HashSet<int> numbers1;  
HashSet<int> numbers2;  
//分别进行numbers1和numbers2的值初始化或赋值  
numbers1.IntersectWith(numbers2);//求两个集合的交集。  
1.3.求两个集合的差集
[csharp] view plain copy 在CODE上查看代码片派生到我的代码片
HashSet<int> numbers1;  
HashSet<int> numbers2;  
//分别进行numbers1和numbers2的值初始化或赋值  
numbers1.ExceptWith(numbers2);//求两个集合的差集。  

1.4.求两个集合的对称差集
[csharp] view plain copy 在CODE上查看代码片派生到我的代码片
HashSet<int> numbers1;  
HashSet<int> numbers2;  
//分别进行numbers1和numbers2的值初始化或赋值  
numbers1.SymmetricExceptWith(numbers2);//求两个集合的对称差集。  

2.HashSet常用扩展方法
2.1.Add,将项目添加到HashSet之中。
2.2.Clear,清空HashSet里面的值。
2.3.Remove,从HashSet中移除值。
2.4Contains,判断HashSet是否包含指定项目。
2.4Equals(Object),判断是否相等。
3.HashSet与Linq操作
HashSet<T>与LINQ的对等的方法
UnionWith       ==>  Union
IntersectWith  ==>  Interset
ExceptWith     ==>  Except
不提供排序     ==>  Distinct
那么我们已经有很多的集合类型如List<T> ,Dictionary<TKey,TValue>或Hashtable等这些集合类型,我们该如何选定我应该采用的哪一个集合类型呢?
“如果你必须建立新的设定,或则如果应用程序只需要存取提供的任务,那么使用任何的IEnumerable<T>集合都已经足够了。但是,如果应用程序需要存取其他值,或则不建议不需要建立新的集合,这时可使用HashSet<T>.”——摘自MSDN
http://msdn.microsoft.com/zh-tw/library/bb397728(v=vs.110).aspx

转自:http://blog.csdn.net/scalzdp/article/details/27346427
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

您尚未登录,请登录后浏览更多精彩内容!
 立即注册
找回密码

QQ|Archiver|手机版|小黑屋|特投网 ( 皖ICP备13010674号-1 

GMT+8, 2024-4-25 23:54 , Processed in 0.025803 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表