首页 > 其他 > 详细

C# HashSet集合类型使用介绍

时间:2014-06-05 11:08:12      阅读:415      评论:0      收藏:0      [点我收藏+]

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.我们要求两个集合的并集

HashSet<int> numbers1;
HashSet<int> numbers2;
//分别进行numbers1和numbers2的值初始化或赋值
numbers1.UnionWith(numbers2);//求两个集合的并集。

1.2.求两个集合的交集

HashSet<int> numbers1;
HashSet<int> numbers2;
//分别进行numbers1和numbers2的值初始化或赋值
numbers1.IntersectWith(numbers2);//求两个集合的交集。

1.3.求两个集合的差集

HashSet<int> numbers1;
HashSet<int> numbers2;
//分别进行numbers1和numbers2的值初始化或赋值
numbers1.ExceptWith(numbers2);//求两个集合的差集。

1.4.求两个集合的对称差集

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



C# HashSet集合类型使用介绍,布布扣,bubuko.com

C# HashSet集合类型使用介绍

原文:http://blog.csdn.net/scalzdp/article/details/27346427

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!