我有一个包含以下字段的文档:
字段1
字段2
字段3
字段4
我有以下表格结构:
field1 | field2 | field3 | field4 || result
--------------------------------------------------
foo bar MC
foo test1 MR
test2 test3 OM
foo test1 bar CM
当一个文档带有field1是foo,field2(空值),field3是bar时,应该选择结果mc。
当一个带有field1的文档是foo,field2是test1,field3是bar时,应该选择结果cm。
当然,您可以检查每一列并在循环每一行之前保持匹配行的打开状态。
但是,这个表结构可能会变得非常大,我正在寻找某种算法来解决上述问题,在性能和良好的方式。
有什么想法吗?
最佳答案
正如@MarkoTopolnik所写,rdbms做你想做的事情但是如果您仍然想实现自己的算法,一个选项是创建一个树:级别1是field1
,级别2是field2
,等等。每个分支都是表的一行。如果你只有两个字段,这看起来像这样:
root----field1.valueA----field2.valueC---result1
\ \
\ \--field2.valueD---result2
\
\field1.valueB----field2.valueC---result3
\
\--field2.valueD---result4
可以在每个级别使用哈希表实现此树首先有一个哈希表,其中
field1
值作为键,hastables作为值。这些哈希表具有field2
作为键和result
作为值。因为您允许null
作为值,所以必须使用HashMap
而不是Hashtable
。