C 集合類選擇

2021-05-23 06:32:46 字數 1644 閱讀 1207

一定要謹慎選擇 system.collections 類。選用錯誤的型別可能限制您使用集合。

考慮以下問題:

您是否需要乙個序列列表,其中的元素通常在檢索其值後被放棄?

如果需要,那麼在需要先進先出 (fifo) 行為時請考慮使用 queue 類或 queue 泛型類。在需要後進先出 (lifo) 行為時請考慮使用 stack 類或 stack 泛型類。

如果不需要,請考慮使用其他集合。

是否需要以某種順序訪問元素,例如 fifo、lifo 或隨機訪問?

queue 類和 queue 泛型類提供 fifo 訪問。

stack 類和 stack 泛型類提供 lifo 訪問。

linkedlist 泛型類允許從開頭到末尾或從末尾到開頭按順序訪問。

其餘的集合提供隨機訪問。

是否需要通過索引訪問每一元素?

arraylist 和 stringcollection 類以及 list 泛型類通過元素的從零開始的索引提供對元素的訪問。

hashtable、sortedlist、listdictionary 和 stringdictionary 類以及 dictionary 和 sorteddictionary 泛型類通過元素的鍵提供對元素的訪問。

nameobjectcollectionbase 和 namevaluecollection 類以及 keyedcollection 和 sortedlist 泛型類通過其元素的從零開始的索引或者通過其元素的鍵提供對元素的訪問。

每一元素將包含乙個值、乙個鍵和乙個值的組合還是乙個鍵和多個值的組合?

乙個值:使用任何基於 ilist 介面或 ilist 泛型介面的集合。

乙個鍵和乙個值:使用任何基於 idictionary 介面或 idictionary 泛型介面的集合。

帶有嵌入的鍵的乙個值:使用 keyedcollection 泛型類。

乙個鍵和多個值:使用 namevaluecollection 類。

是否需要用與輸入元素方式不同的方式對元素排序?

hashtable 類按其元素的雜湊**對元素排序。

sortedlist 類以及 sorteddictionary 和 sortedlist 泛型類根據 icomparer 介面和 icomparer 泛型介面的實現按鍵對元素排序。

arraylist 提供 sort 方法,該方法接受 icomparer 實現作為引數。其對應的泛型類(list 泛型類)提供 sort 方法,該方法接受 icomparer 泛型介面的實現作為引數。

是否需要資訊的快速搜尋和檢索?

對於小集合(10 項或更少),listdictionary 比 hashtable 快。sorteddictionary 泛型類提供比 dictionary 泛型類更快的查詢。

是否需要只接受字串的集合?

stringcollection(基於 ilist)和 stringdictionary(基於 idictionary)都位於 system.collections.specialized 命名空間中。

此外,通過為泛型型別引數指定 string 類,可以使用 system.collections.generic 命名空間中的任何泛型集合類作為強型別字串集合。

C 集合介面與集合類

c 開發經常用到.net框架為我們提供的集合介面和集合類,接下來做乙個總結,如有差錯,希望各位大神指正。首先是集合介面,自己畫了一張圖 嘿嘿,有點醜 來說明集合介面的繼承關係。個人覺得,了解集合介面,首先要把握他們的繼承關係。如上圖,所有的集合介面和集合類都繼承 實現ienumerable介面。ie...

c 集合類操作

構造方法 set 資料型別 名稱 例如 set int num 基本操作 含義begin 返回set容器的第乙個元素 clear 刪除set容器中的所有的元素 max size 返回set容器可能包含的元素最大個數 end 返回set容器的最後乙個元素 size 返回當前set容器中的元素個數 em...

C 集合類 使用

關聯性集合類即我們常說的鍵值對集合,允許我們通過key來訪問和維護集合。我們來看一下 net 為我們提供了哪些泛型的關聯性集合類 1 dictionary2 sorteddictionary3 sortedlist dictionary dictionary可能是最常用的關聯性集合了,它的訪問,新增...