使用 Guava Graph 通过 ID 获取节点

Get a node by ID with Guava Graph

我正在寻找一种使用标识符检索节点的方法,仅使用 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 and Eclipse Collections