2013-08-07 55 views
0

我的情況是,我正在爲基於組件的系統製作消息系統,可以通過整數或字符串值查找/發送消息。我想爲本地代碼使用字符串值,因爲它更容易處理,我希望使用整數值,這樣我就可以通過網絡發送消息而不是字符串值。C#通過值或密鑰查找項目

通常我會使用一個枚舉以方便參考,並保留所有基於整數的內容,但我希望這是動態的,以便我可以添加或刪除消息類型和值。

我想我需要使用具有整數鍵和字符串值的字典,但我試圖找出是否會遇到按值搜索而不是按鍵搜索的性能問題。我不需要擔心獨特的值(我將使用哈希集來確保它們都是唯一的)。

BLUF:當按價值而不是按鍵獲取物品時,是否需要擔心性能問題?

+0

多少消息,你呢?如果它不是一個天文數字,它不應該是一個問題。 – Artless

回答

3

你失去了字典(O(1)時間查找)的優點,因爲值不被散列。所以,你會得到一個正常列表(O(log n)與二進制搜索的查找時間)。

喬恩斯基特張貼雙向詞典中的代碼解決方案在這個環節上,如果你有興趣:

Getting key of value of a generic Dictionary?

4

您可以輕鬆地擁有兩個詞典,一個來自int - > string,另一個來自string - > int。

+0

並封裝在一個類,所以你不要忘記保持同步的兩個集合 –

+0

謝謝,你的解釋和一個Namfuak鏈接到本質上是相同的;我給你一個+1和他點頭,因爲他還提到了表演 –

0

如果沒有太多的數據,那麼掃描值就可以了。

如果有大量的數據和大量的操作,然後要麼使用DavidN的建議或代碼這一個多密鑰詞典複製:

Multi-key dictionary in c#?

有很多的建議那裏 - 我建議滾動下來