HashSet是以數學Set集合為基礎的,使用HashSet可以提高集合的運算。使用HashSet集合不自帶排序方法,如果需要排序的需求可以參考使用List
集合配合Sort方法。 HashSet的優勢在與運算快,作為一種存放在內存的數據,可以很快的進行設置和取值的操作。HashSet無法向裡面添加重復的數據,避免添加HashSet
裡面的數據重復。我們使用HashSet常常在集合相加集合相減這些集合與集合之間的操作之中。 使用HashSet作為內存存儲的快速數據庫,這個需要隨時跟新HashSet裡面的數據,因為在HashSet中一個長時間未被訪問的數據,將被系統自動回收掉,那麼就會導致失敗,那麼如何才能保證HashSet裡面的值是長存在的而且達到不斷的更新裡面的值呢?
首先程序過來訪問我們HashSet裡面有沒有需要的數據,如果有我們需要的數據就直接返回給用戶,不用調用查詢數據庫的操作。如果HashSet裡面沒有我們需要的數據,程序再去查詢一次數據庫是否有該Query數據,如果有返回給用戶同時把查詢的結果添加到HashSet裡面,這麼做可以一定程度的降低查詢數據庫所帶來的不便,但是不能根除,需要進一步提升性能,可以查看前面的緩存策略使用memcached來提高網站查詢和訪問。
1.1.我們要求兩個集合的並集
HashSetnumbers1; HashSet numbers2; //分別進行numbers1和numbers2的值初始化或賦值 numbers1.UnionWith(numbers2);//求兩個集合的並集。
1.2.求兩個集合的交集HashSetnumbers1; HashSet numbers2; //分別進行numbers1和numbers2的值初始化或賦值 numbers1.IntersectWith(numbers2);//求兩個集合的交集。 1.3.求兩個集合的差集
HashSetnumbers1; HashSet numbers2; //分別進行numbers1和numbers2的值初始化或賦值 numbers1.ExceptWith(numbers2);//求兩個集合的差集。
1.4.求兩個集合的對稱差集
HashSetnumbers1; HashSet numbers2; //分別進行numbers1和numbers2的值初始化或賦值 numbers1.SymmetricExceptWith(numbers2);//求兩個集合的對稱差集。
2.1.Add,將項目添加到HashSet之中。
2.2.Clear,清空HashSet裡面的值。
2.3.Remove,從HashSet中移除值。
2.4Contains,判斷HashSet是否包含指定項目。
2.4Equals(Object),判斷是否相等。
HashSet
與LINQ的對等的方法 UnionWith ==> Union
IntersectWith ==> Interset
ExceptWith ==> Except
不提供排序 ==> Distinct
那麼我們已經有很多的集合類型如List
,Dictionary 或Hashtable等這些集合類型,我們該如何選定我應該采用的哪一個集合類型呢? “如果你必須建立新的設定,或則如果應用程序只需要存取提供的任務,那麼使用任何的IEnumerable
集合都已經足夠了。但是,如果應用程序需要存取其他值,或則不建議不需要建立新的集合,這時可使用HashSet .”——摘自MSDN http://msdn.microsoft.com/zh-tw/library/bb397728(v=vs.110).aspx