C#在字典中搜索字典的最快方法

时间:2017-10-05 02:20:10

标签: c# string dictionary

我创建了一个文本管理器类来处理不同上下文的文本(例如:一般上下文,菜单上下文,游戏上下文等等)。

每个上下文都是使用二进制文本文件创建的,数据存储在字典中的字典中,如下所示:

private Dictionary<string, Dictionary<string, string>> m_TextContexs;

其中的工作原理如下:

m_TextContexs[context][textID][actual text]

我希望用户只能使用&#39; textID&#39;找到任意一行文字。这样的函数中的字符串:

public string GetText(string id)

已编辑:textIDs是唯一的,因为在多个上下文中不会存在相同的textID。

所以这个函数应该在所有现有的上下文中找到字符串id并返回有效的实际文本。

这里的问题是,执行此操作的最快方法是什么。我不是一个经验丰富的程序员,所以我要做的就是遍历所有的上下文,如果提到文本ID存在的话,请查看每个上下文。

如果您想知道为什么我需要&#39;背景&#39;是对文本进行分组,因此如果不再需要上下文,我可以从内存中卸载该数据。

非常感谢提前:)

1 个答案:

答案 0 :(得分:4)

字典在O(1)时间内从键中检索值,这意味着实际上是即时的,所以这个问题实际上取决于您的context是什么类型的动物,以及textId的唯一性。

你怎么知道哪个上下文是“正确的”?你能从用户的当前位置和应用程序中的路径确定这个吗?如果是这样,那么您可以将那个值传递给查找函数。

否则,循环遍历上下文对你没有好处,除非textId在上下文中是唯一的。例如,给定textId 123,您如何知道自己是想要m_TextContexs[context1][123]还是m_TextContexs[context2][123]

如果textId 在上下文中是唯一的(最佳情况),那么您可以从图片中删除context,并使用Dictionary<string, string>和{ {1}}是唯一的关键。