我有一些配置数据,我想在代码中建模如下:
Key1, Key2, Key3, Value null, null, null, 1 1, null, null, 2 9, null, null, 21 1, null, 3, 3 null, 2, 3, 4 1, 2, 3, 5
使用此配置集,然后我需要在bazillion(给予或接受){Key1,Key2,Key3}元组上进行查找以获得"有效"值.使用的有效值基于密钥/优先级总和,在此示例中:
Key1 - Priority 10 Key2 - Priority 7 Key3 - Priority 5
因此,具有Key1 = null,Key2 = match和Key3 = match的配置条目的特定查询击败了一个具有Key1 = match,Key2 = null和Key3 = null,因为Key2 + Key3优先级> Key1优先级...有道理?!
given a key of {1, 2, 3} the value should be 5. given a key of {3, 2, 3} the value should be 4. given a key of {8, 10, 11} the value should be 1. given a key of {1, 10, 11} the value should be 2. given a key of {9, 2, 3} the value should be 4. given a key of {8, 2, 3} the value should be 4. given a key of {9, 3, 3} the value should be 21.
是否有一种简单的方法来建模这种通用的数据结构和查找算法,因为#和键的类型是可变的,并且可以动态定义"真值表"(查找的顺序)?作为泛型而不是整数的类型将是完美的(浮点数,双精度数,ushorts等),并且很容易扩展到n个键也很重要!
估计的"配置"表大小:1,000行,查找估计的"数据":1e14
这给出了预期的性能类型.
我正在寻找C#中的想法或者可以轻松转换为C#的东西.