0

我的情况是,我正在为基于组件的系统制作消息传递系统,其中消息可以通过整数或字符串值查找/发送。我想将字符串值用于本地代码,因为它更易于处理,并且我想使用整数值,这样我就可以通过网络而不是字符串值发送消息。

通常我会使用枚举以方便参考并保持所有基于整数的内容,但我希望它是动态的,以便我可以添加或删除消息类型和值。

我想我需要使用带有整数键和字符串值的字典,但我试图弄清楚我是否会遇到按值搜索而不是按键搜索的性能问题。我不应该担心唯一值(我将使用哈希集来确保它们都是唯一的)。

BLUF:当通过值而不是键获取项目时,我是否需要担心性能问题?

4

3 回答 3

4

您可以很容易地拥有两个字典,一个来自 int -> string,另一个来自 string -> int。

于 2013-08-07T14:46:19.767 回答
3

您失去了字典的优势(O(1) 时间查找),因为这些值没有被散列。因此,您将获得普通列表的查找时间(O(log n) 与二进制搜索)。

如果您有兴趣,Jon Skeet 在此链接中发布了双向字典的代码解决方案:

获取通用字典的价值键?

于 2013-08-07T14:47:47.897 回答
0

如果没有太多数据,则可以扫描值。

如果有很多数据和很多操作,那么要么使用 DavidN 的建议,要么从这个复制代码用于多键字典:

c#中的多键字典?

那里有很多建议 - 我建议向下滚动

于 2013-08-07T14:47:21.057 回答