我有一个包含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是否与每行中的值匹配并应用速率。是否有任何图形数据结构可以快速应用?
答案 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)
。