C# HashSet集合類型使用介紹

1.HashSet集合

使用HashSet能夠提升集合的運算。使用HashSet集合不自帶排序方法,若是須要排序的需求能夠參考使用List<T>集合配合Sort方法。數據庫

HashSet的優點在與運算快,做爲一種存放在內存的數據,能夠很快的進行設置和取值的操做。HashSet沒法向裏面添加劇復的數據,避免添加HashSet<T>裏面的數據重複。咱們使用HashSet經常在集合相加集合相減這些集合與集合之間的操做之中。緩存

使用HashSet做爲內存存儲的快速數據庫,這個須要隨時跟新HashSet裏面的數據,由於在HashSet中一個長時間未被訪問的數據,將被系統自動回收掉,那麼就會致使失敗,那麼如何才能保證HashSet裏面的值是長存在的並且達到不斷的更新裏面的值呢?memcached

首先程序過來訪問咱們HashSet裏面有沒有須要的數據,若是有咱們須要的數據就直接返回給用戶,不用調用查詢數據庫的操做。若是HashSet裏面沒有咱們須要的數據,程序再去查詢一次數據庫是否有該Query數據,若是有返回給用戶同時把查詢的結果添加到HashSet裏面,這麼作能夠必定程度的下降查詢數據庫所帶來的不便,可是不能根除,須要進一步提高性能,能夠查看前面的緩存策略使用memcached來提升網站查詢和訪問。性能

1.1.咱們要求兩個集合的並集網站

HashSet<int> numbers1;
HashSet<int> numbers2;
//分別進行numbers1和numbers2的值初始化或賦值
numbers1.UnionWith(numbers2);//求兩個集合的並集。

  

1.2.求兩個集合的交集blog

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之中。it

2.2.Clear,清空HashSet裏面的值。io

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

相關文章
相關標籤/搜索