字典列表(搜索优化,C#)
本文关键字:优化 搜索 列表 字典 | 更新日期: 2023-09-27 18:21:14
我有一个字典列表,List<Dictionary<String,Object>>
。密钥是某个抽象记录的标识符。这些词典来自不同的地方。每个Dictionary的大小都在[01000]的范围内。
所有词典都包含唯一的密钥。积累了一些字典后,我必须按关键字搜索。它可以通过迭代List并在每个Dictionary上调用search方法来完成,也可以通过将所有Dictionary复制到一个Dictionary中来完成。这些方法不能提供很好的性能。我对优化这项任务的方法很感兴趣。
编辑:谢谢你们!也许我会改变累积方法,从而消除问题本身!
您是否预计在初始填充阶段之后会有大量的密钥获取?如果是的话,把所有的东西合并成一本字典。如果你只做几次提取,我看不出有什么比询问每一本字典更好的方法了。
当然,你可以创建一种混合方法:为合并后的结果创建一个新的(最初是空的)字典,并在你被要求提供密钥时填充它——每次你被要求获得一个不在"大"字典中的密钥时,都要搜索其余的字典。
难道没有办法预测哪本字典会有一个特定的关键字吗?
如果有任何方法可以通过指定key
来本地化感兴趣的词典,您可以自然地尝试创建一个交叉关联表,在其中您可以尝试将key
与dictionary
匹配。
如果没有,imho,请不要看到任何其他选项,它们只是在集合上迭代并要求key
,可能是使用标准的for
和而不是更好的linq编码。
除了Jon所说的之外,还有一个名为PowerCollections的API,其中包含MultiDictionary。如果我的记忆没有被破坏,我相信,你可以把它用于上述目的。
http://powercollections.codeplex.com/discussions/242163
听起来有很多字典可以"加速"(假设动机)搜索,这些字典仅限于某些"抽象记录"类型。
你可以只使用一个字典,但在有限的搜索中,找到结果后会检查结果是否为所需的抽象记录类型。而不是像目前那样为每个抽象记录类型维护一个字典。