我有一个图形表示,每个节点都包含(int id, String categoryName)
. 它由大约 500,000 个节点组成。现在说我想检查"computing"
图表中是否存在 categoryName,这是否意味着我必须像使用 BSF 方法一样遍历整个图表?(如果我在这里错了,请纠正我)。现在检查该 categoryName 是否存在非常慢(最多需要 3 分钟),有什么建议可以提高搜索和比较字符串值的速度吗?
问问题
121 次
1 回答
2
如果您没有其他数据 - 那么是的,将需要搜索图表。
但是,您可以预处理并使用从字符串映射到实际节点的Map<String,Node>
(您的节点类在哪里Node
),并快速查找某个String
节点是否具有相关节点。
您可以使用以下方法从字符串中获取节点:map.get(string)
您可以使用 a TreeMap
(具有 O(logn) 查找和插入时间并已排序)和 a HashMap
(实现哈希表并具有O(1)
平均大小写查找和插入时间)
注意:这假设没有重复,即没有字符串有两个不同的节点代表它。
如果这个假设不正确,你可以使用Guava Multimap 之类的东西
于 2012-10-28T16:22:13.173 回答