我的情况是我正在为基于组件的系统创建消息传递系统,其中可以通过整数或字符串值查找/发送消息。我想使用本地代码的字符串值,因为它更容易处理,我想要使用整数值,所以我可以通过网络而不是字符串值发送消息。
通常我会使用枚举来方便参考,并保持所有基于整数的,但我希望它是动态的,以便我可以添加或删除消息类型和值。
我想我需要使用带有整数键和字符串值的字典,但我想弄清楚是否会遇到按值搜索而不是按键搜索的性能问题。我不需要担心唯一值(我会使用一个hashset来确保它们都是唯一的)。
BLUF:按价值而非按键获取商品时,是否需要担心性能问题?
答案 0 :(得分:4)
你可以很容易地拥有两个字典,一个来自int - >字符串和字符串中的一个 - >中间体
答案 1 :(得分:3)
你失去了字典的优势(O(1)时间查找),因为这些值没有经过哈希处理。因此,您将获得正常列表的查找时间(使用二进制搜索的O(log n))。
如果您有兴趣,Jon Skeet在此链接中发布了双向字典的代码解决方案:
答案 2 :(得分:0)
如果没有太多数据,那么扫描值就可以了。
如果有大量数据和大量操作,那么要么使用DavidN的建议,要么从这个中复制代码用于多密钥字典:
<强> Multi-key dictionary in c#? 强>
那里有很多建议 - 我建议向下滚动