比较图表中的字符串

时间:2012-10-28 16:18:52

标签: java string data-structures graph

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

1 个答案:

答案 0 :(得分:2)

如果您没有其他数据 - 那么是的,将需要搜索图表。

但是,您可以预处理并使用从字符串映射到实际节点的Map<String,Node>(其中Node是您的节点类),并快速查找某个String有一个相关的节点。

您可以使用:map.get(string)

从字符串中获取节点

您可以使用TreeMap(其中包含O(logn)搜索和插入时间并且已订购)和HashMap(实现哈希表并且平均O(1)案件寻求和插入时间)


注意:这假定没有重复,即没有字符串有两个不同的节点代表它。
如果这个假设不正确,你可以使用像Guava Multimap

这样的东西