java - 使用 Guava Graph 按 ID 获取节点
问题描述
我正在寻找一种仅使用 Guava 库来使用标识符检索节点的方法。我不喜欢使用我考虑过的外部 HashSet,因为我的数据集太大了。
我想要一种使用索引、使用字符串或整数类型来索引我的所有图形节点的方法,并且以后能够有效地检索我的节点。
现在我可以遍历我的 MutableGraph 的节点集,并检查对象是否相等,如下所示:
MutableGraph<CategoryNode> wikiGraph = GraphBuilder.directed().build();
for (MyNode node : wikiGraph.nodes()) {
if(node.equals(new MyNode("myStringIndex"))) {
// object found !
return node;
}
}
但是,如果节点数量变大,这是非常低效的。是否有用于在 Guava 中索引图形节点的内置解决方案,或者我是否需要使用另一个库?
解决方案
如果您正在寻找一种方法来索引您的图形节点,遗憾的是 Guava 没有内置此功能。考虑使用CQEngine,据我了解,它允许您对任何集合(例如一组图形节点)执行此操作.
或者,如果您只是在寻找内存效率更高的集合实现,那么有多种选择,包括但不限于Koloboke、fastutil和Eclipse Collections。
推荐阅读
- python - 如何在测试中伪造 Popen?
- apache-kafka - KafkaProducer.close() 和 KafkaProducer.flush() 的区别
- android - 设备是否应该在电池测试期间表现得好像什么都没发生?
- google-chrome - Chrome DevTools Network 标签中的“transferred”和“resources”有什么区别?
- javascript - 如何以角度解决此路线问题?
- python-2.7 - 使用 AWS Lambda 将 S3 存储桶链接到 DynamoDB
- c++ - 发送数据 lwip STM32 PC
- python - 在 Visual Studio 代码上运行 ev3 mindstorms 的问题
- php - 将 match_all 与过滤器一起使用
- c++ - 表达式必须具有对象指针类型