首页 > 解决方案 > 使用 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 中索引图形节点的内置解决方案,或者我是否需要使用另一个库?

标签: javahashmapguavagraph-theoryjgraph

解决方案


如果您正在寻找一种方法来索引您的图形节点,遗憾的是 Guava 没有内置此功能。考虑使用CQEngine,据我了解,它允许您对任何集合(例如一组图形节点)执行此操作.

或者,如果您只是在寻找内存效率更高的集合实现,那么有多种选择,包括但不限于KolobokefastutilEclipse Collections


推荐阅读