此内存中查找表的最佳数据结构是什么?

Rob*_*ers 5 lookup dictionary data-structures

我需要将查找表存储为我的一个类中的实例成员.构造对象时将初始化该表.每个"行"将有3个"列":

StringKey (e.g., "car")
EnumKey (e.g., LookupKeys.Car)
Value (e.g, "Ths is a car.")
Run Code Online (Sandbox Code Playgroud)

我想选择能够通过StringKey EnumKey 进行查找的最佳性能的数据结构.

对于相同的字典值,有两个键很尴尬.我以前从未遇到过这种情况,所以我想知道这类事情的标准是什么.

我可以创建一个键/值/值结构而不是键/键/值,但我想知道会产生什么类型的性能影响.

我觉得这一切都错了吗?

unw*_*ind 5

嗯......"错误"是一种苛刻的方式.我认为,因为最常见的字典是"单值键值",并且为此提供了有效的数据结构(映射),所以通常最好只使用其中的两个,共享内存以获取值.在所有可能的.


S.L*_*ott 4

你有两个哈希图。

  • 一是从 StringKey 到 value。

  • 一是从 EnumKey 到 value。

您不必复制所有 Value 实例,这些对象可以在两个哈希图之间共享。

如果有很多项目,您可能需要使用两个树形图而不是两个哈希图。但基本原则(“分享价值观”)适用于这两种结构。一组带有两个映射的值。