程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# HashSet集合類型使用介紹

C# HashSet集合類型使用介紹

編輯:C#入門知識

1.HashSet集合

HashSet是以數學Set集合為基礎的,使用HashSet可以提高集合的運算。使用HashSet集合不自帶排序方法,如果需要排序的需求可以參考使用List集合配合Sort方法。

HashSet的優勢在與運算快,作為一種存放在內存的數據,可以很快的進行設置和取值的操作。HashSet無法向裡面添加重復的數據,避免添加HashSet裡面的數據重復。我們使用HashSet常常在集合相加集合相減這些集合與集合之間的操作之中。

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

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

1.1.我們要求兩個集合的並集

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

1.2.求兩個集合的交集

HashSet numbers1;
HashSet numbers2;
//分別進行numbers1和numbers2的值初始化或賦值
numbers1.IntersectWith(numbers2);//求兩個集合的交集。

1.3.求兩個集合的差集

HashSet numbers1;
HashSet numbers2;
//分別進行numbers1和numbers2的值初始化或賦值
numbers1.ExceptWith(numbers2);//求兩個集合的差集。

1.4.求兩個集合的對稱差集

HashSet numbers1;
HashSet 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與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



  1. 上一頁:
  2. 下一頁: