0

我有一个图形表示,每个节点都包含(int id, String categoryName). 它由大约 500,000 个节点组成。现在说我想检查"computing"图表中是否存在 categoryName,这是否意味着我必须像使用 BSF 方法一样遍历整个图表?(如果我在这里错了,请纠正我)。现在检查该 categoryName 是否存在非常慢(最多需要 3 分钟),有什么建议可以提高搜索和比较字符串值的速度吗?

4

1 回答 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 回答