簡體   English   中英

C# - 搜索字典的鍵與列表中的搜索值

[英]C# - Searching keys of dictionary vs searching values in List

就搜索速度而言,搜索字典的鍵或列表的值是否更好?

換句話說,哪一個最可取?

Dictionary<tring,string> dic = new Dictionary<string,string>();
if(dic.ContainsKey("needle")){ ... }

要么

List<string> list = new List<string>();
if(list.Contains("needle")){ ... }

如果“更好”意味着“更快”,那么使用字典。 字典鍵是通過哈希碼組織的,因此查找比使用ocllection中的多個項目列表搜索要快得多。

使用良好的散列算法,字典搜索可以接近O(1),這意味着搜索時間與字典的大小無關。 另一方面,列表是O(n),意味着時間(平均)與列表的大小成比例。

如果您只有關鍵項(不將鍵映射到值),您也可以嘗試使用HashSet 它具有O(1)查找的好處,而沒有字典的Value端的開銷。

(承認開銷可能很小,但如果你不需要它,為什么要這樣做呢?)

對於查找,字典通常是最好的,因為它所花費的時間保持不變。 使用列表會增加列表獲得的值。

另見: http//www.dotnetperls.com/dictionary-time

我建議在查找次數大大超過插入次數時使用Dictionary 當你總是少於四個項目時,可以使用List

對於查找,Dictionary通常是更好的選擇。 所需時間是平坦的,O(1)恆定的時間復雜度。 列表具有O(N)線性時間復雜度。 三個元素可以比在Dictionary中查找的更快地循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM