對於需要保存唯一整數列表的類,您會推薦什麼?推薦用於獨特整數集合的.NET類?
我將要添加()整數到集合,並檢查是否存在載有()。
也很高興也讓他們在一個列表作爲顯示字符串,即。 「1,5,10,21」。
對於需要保存唯一整數列表的類,您會推薦什麼?推薦用於獨特整數集合的.NET類?
我將要添加()整數到集合,並檢查是否存在載有()。
也很高興也讓他們在一個列表作爲顯示字符串,即。 「1,5,10,21」。
的
HashSet<T>
類提供高性能的設置操作。一個集合是一個不包含重複元素的集合,其元素沒有特定順序...對象的容量是對象可以容納的元素的數量。當元素添加到對象時,對象的容量會自動增加。
HashSet<T>
該類基於數學集的模型並提供與訪問Dictionary<TKey, TValue>
或Hashtable
集合的鍵類似的高性能集合操作。簡而言之,HashSet<T>
類可以被認爲是沒有值的Dictionary<TKey, TValue>
集合。一個
HashSet<T>
集合沒有排序,不能包含重複的元素......
如果您不能使用.NET 3.5,那麼你就不能使用HashSet的。如果是這種情況,那麼基於Dictionary結構很容易推出自己的產品。
public class Set<T> {
private class Unit { ... no behavior }
private Dictionary<T, Unit> d;
....
}
單位旨在是一個只有一個值的類型。無論您將元素映射到,只需使用鍵即可知道您的設備中有什麼。您在問題中要求的操作很容易實現。
你可以從KeyedCollection繼承一個類。通過這種方式,您的密鑰本身可以是值,您可以覆蓋ToString,以便獲得所需的輸出。這可以給你你想要/需要的行爲。
注意,這個答案是對的框架將q
在我的測試中2.0的一部分,我發現有一個虛擬值字典比HashSet的,具有非常大的數據集處理時(快在我的情況下是100,000+)。我期望這是因爲詞典允許你設置一個初始容量,但我不知道。在你描述的情況下,如果我想要一個非常大的一組數字,那麼我可能會使用Dictionary,然後(或者當我添加到Dictionary中時,取決於意圖)使用字符串生成器迭代它,創建輸出字符串。
對不起,我沒有指定。我可以使用最新的框架。 3.5但你的答案可能會幫助其他人無法使用最新的。 – 2008-10-02 18:21:21