适用于申请条件的数据结构

时间:2013-12-16 12:34:38

标签: java xml tree perl-data-structures

我有一个包含10k行数据的csv文件,如下所示。

20131210,0,0,00981231231110,0123,123p1.
20131210,0,0,00981231231120,0123,123p1.
20131210,0,0,00981231231130,0123,123p1.
20131210,0,0,00981231231140,0123,123p1.
20131210,0,0,00981231231150,0123,123p1.

我还有以下xml文件,如下所示

<validatecondition>
<ID>
   00981231231110
</ID>
<SVC_ID>
    TMC
</SVC_ID>
<applyrate>
   12.0Dollars
</applyrate>
<ID>
   00981231231120
</ID>
<applyrate>
   2.0Dollars
</applyrate>
.
.
.
.
many conditions
</validatecondition>


node
|-- 00981231231110
|    |-- TMC
|    |    |-- applyrate
|    |    |    |-- 1.00
|    |    |    
|    |    |
|    |   
|    |
|      
+-- 00981231231120
|   |-- applyrate
|   |    |-- 111.00
|
+-- 00981231231130
|    |-- RMC
|    |    |-- applyrate
|    |    |    |-- 11.00
|    |    |    
|    |    |
|    |   
|    
|    

我已在每条线上应用上述条件并相应地得出费率。目前,逻辑顺序迭代每个节点,并检查ID是否与每行中的值匹配并应用速率。是否有任何图形数据结构可以快速应用?

1 个答案:

答案 0 :(得分:0)

如果您必须 查找 ,大​​多数情况下答案是Map。因此,在您的情况下,您必须通过Id查找。

因此,在您的情况下,您可以创建HashMap<Long, XmlData>(或类似的东西)。然后迭代csv数据并使用Id。{/ p>从Map查找

由于列表查找为O(n^2),因此您的算法会从O(n)加速到O(n),您需要n次,HashMap查询是O(1)(已摊销)。

如果由于某种原因无法使用HashMap,您可以尝试订购xml数据并使用二进制搜索算法。在这种情况下,您最终可以使用O(n log n),但仍然优于O(n^2)