[英]List vs Dictionary (Hashtable)
這可能是一個愚蠢的問題,但我讀到Hashtables
和Dictionaries
比列表更快,因為他們用鍵索引項目。
我知道List
或Array
是針對沒有值的元素,而Dictionary
是針對具有值的元素。 因此,我認為擁有一個具有您需要的值作為鍵的Dictionary
並且所有值都相等的Dictionary
可能是明智的嗎?
更新 :
基於評論,我認為我需要的是HashSet
。 這個問題談到了他們的表現。
Dictionary / Hashtable與List /數組之間也存在一些缺點:
使用適合的情況。 有時這將是一個列表或一個數組。 有時它會是一個字典。 你幾乎不應該再使用HashTable了(如果你真的不存儲你正在存儲的類型,則更喜歡Dictionary <KeyType,Object>)。
1它通常是唯一的,但由於沖突的可能性很小,因此集合必須在計算哈希值后檢查存儲桶。
“更快”取決於你需要它們。
.NET List
只是連續內存的一塊(這不是鏈接列表),這使得順序訪問非常有效(特別是當您考慮緩存和預取現代CPU的影響時)或“隨機”通過已知的整數索引。 搜索或插入元素(特別是在中間) - 不是那么多。
Dictionary
是一種關聯數據結構 - 一個鍵可以是任何可哈希的(不僅僅是整數索引),但是元素不是以“有意義”的方式排序,而通過已知鍵的訪問不如List
的整數索引那么快。
因此,為工作選擇合適的工具。
您的語句“列表或數組用於沒有值的元素,而字典用於具有值的元素”,並非嚴格來說。
更准確地說,List是元素的集合,Hashtable或Dictionary是元素的集合以及用於訪問每個元素的唯一鍵。
將列表用於極少數元素的集合,或者只需要訪問整個集合,而不是集合中的單個元素。
當集合很大時和/或當您需要查找/訪問集合的各個成員時,請使用Hashtable或Dictionary。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.