【c#集合】Lookup 類 有序字典 SortedDictionary


Dictionary<TKey,TValue>類支持每個鍵關鍵一個值,Lookup<TKey,TElement>類非常類似於Dictionary<TKey,TValue>類,但把鍵映射到一個值集合上,這個類在程序集System.Core中實現

用System.Linq名稱空間定義。

Lookup<TKey,TElement>類不能像一般的字典那樣創建,而必須調用ToLookup()方法,該方法返回一個Lookup<TKey,TElement>對象。ToLookup()方法是一個擴展方法,它可以用於實現IEnumerable<T>接口的所有類。只要有實現IEnumerable<T>接口的都可以調用這個ToLookup()方法。

這個方法需要一個Func<TSource,TKey>類型的委托,這個委托定義了鍵的選擇器。

 有序字典

 SortedDictionary<TKey,TValue> 是一個二叉搜索樹,其中元素根據鍵來排序。

該鍵類型必須實現IComparable<Tkey>接口。如果鍵的類型不能排序,則還可以

創建一個實現了IComparer<TKey>接口的比較器,將比較器用作有序字典的構戰函數的一個參數。

  SortedDictionary<TKey,TValue>和SortedList<TKey,TValue>功能相似,

但 SortedList<TKey,TValue>實現為一個基於數組的列表,而SortedDictionary<TKey,TValue>

類實現為一個字典。

SortedList<TKey,TValue>使用的內存比SortedDictionary<TKey,TValue>少

SortedDictionary<TKey,TValue>的元素插入和刪除操作比較快。

在用已排好序的數據填充集合時,若不需要修改容量,SortedList<TKey,TValue> 就比較快。

包含不重復元素的集合稱為集(set).Net Framework包含兩個集(HashSet<T>和SortedSet<T>),它們都實現ISet<T>接口。

HashSet<T>集包含不重復元素的無序列表,SortedSet<T>集包含不重復的有序列表

ISet<T>接口提供的方法可以創建合集、交集、或者給出一個集是另一個集的超集或子集

 子集:IsSubsetOf()和超集:IsSupersetOf()方法比較集和實現了IEnumerable<T>接口的集合,並返回一個布爾結果。

真子集:IsProperSubsetOf() 指定集合的真子集 一個空集是任何其他集合的真子集。

真子集:集合A是集合B的子集,並且集合B不是集合A的子集,那么集合A叫做集合B的真子集。

真超集:IsProperSupersetOf()指定集合的真超集 一個空集是任何其他集合的真超集。

如果一個集合S2中的每一個元素都在集合S1中,且集合S1中可能包含S2中沒有的元素,則集合S1就是S2的一個超集,反過來,S2是S1的子集。 S1是S2的超集,若S1中一定有S2中沒有的元素,則S1是S2的真超集,反過來S2是S1的真子集。

Overlaps 確定當前的 HashSet<T> 對象和指定的集合是否共享常見元素

public bool Overlaps (System.Collections.Generic.IEnumerable<T> other);

如果 HashSet<T> 對象與 other 至少共享一個公共元素,則為 true;否則為 false

UnionWith:修改當前的 HashSet<T> 對象,以包含該對象本身、指定集合中存在的所有元素或兩者。將兩個數組合並元素不重復 元素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM