使用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.1.Add,將項目添加到HashSet之中。it
2.2.Clear,清空HashSet裏面的值。io
2.3.Remove,從HashSet中移除值。
2.4Contains,判斷HashSet是否包含指定項目。
2.4Equals(Object),判斷是否相等。
HashSet<T>與LINQ的對等的方法
UnionWith ==> Union
IntersectWith ==> Interset
ExceptWith ==> Except
不提供排序 ==> Distinct
那麼咱們已經有不少的集合類型如List<T> ,Dictionary<TKey,TValue>或Hashtable等這些集合類型,咱們該如何選定我應該採用的哪個集合類型呢?
「若是你必須創建新的設定,或則若是應用程序只須要存取提供的任務,那麼使用任何的IEnumerable<T>集合都已經足夠了。可是,若是應用程序須要存取其餘值,或則不建議不須要創建新的集合,這時可以使用HashSet<T>.」——摘自MSDN