2013-03-19 33 views

回答

4

ConcurrentDictionary<T,U>Dictionary<T,U>的併發版本。它不會像SortedList<T,U>那樣按鍵排序。複雜性與Dictionary<T,U>的複雜性密切相關,因此提取方法O(1)。

SortedList<T,U>對於大多數讀取操作而言,它具有O(log n)複雜度,因爲它正在走內部排序結構。

+0

有沒有辦法用併發數據結構來實現'O(log n)'? – Killrawr

+0

@Killrawr'O(1)'通常比較好 - 你爲什麼要達到'O(log n)'? –

+0

我認爲'O(log n)'搜索比'O(n)'快,從我的理解中就像搜索一本教科書,並在每次迭代中切半本書,直到找到結果。直到找到結果爲止,而不是搜索每本書的頁面。 – Killrawr

2

我認爲ConcurrentDictionary<K,V>是一個線程安全的模擬Dictionary<K,V>和都應該有複雜性O(1)。他們不提供關鍵排序,訂單不能保證。

+0

說'ConcurrentDictionary '是'Dictionary'的一個* concurrent *版本,用來區別於其他*線程安全*實現,比如那些使用獨佔鎖定('lock(this){)的實現。 ..}')裏面的方法。 –

+0

@ 280Z28:我特意檢查了[MSDN](http://msdn.microsoft.com/en-us/library/dd287191.aspx),並將其描述爲:「表示**線程安全**密鑰集合/值對可以被多個線程同時訪問「。 – abatishchev

+0

我應該補充一點,我沒有投票給你,並且你沒有錯。我只是指出,所給出的其他答案更具體一些。 :) –