Получить узел по идентификатору с помощью Guava Graph

Я ищу способ получить узел с помощью идентификатора, используя только библиотеку Guava. Я предпочитаю не использовать внешний HashSet, который я рассматривал, потому что мой набор данных слишком велик.

Я хотел бы иметь способ индексировать все мои узлы графа с помощью индекса, используя тип String или целочисленный, а затем иметь возможность эффективно извлекать мои узлы.

Прямо сейчас я мог бы перебрать набор узлов моего MutableGraph и проверить равенство объектов, например:

    MutableGraph<CategoryNode> wikiGraph = GraphBuilder.directed().build();
    for (MyNode node : wikiGraph.nodes()) {
        if(node.equals(new MyNode("myStringIndex"))) {
            // object found !
            return node;
        }
    }

Но это крайне неэффективно, если количество узлов становится большим. Есть ли встроенное решение для индексации узлов графа в Guava или мне нужно использовать другую библиотеку?


person Jean-Pierre Coffe    schedule 17.05.2018    source источник
comment
Любая библиотека, вероятно, также будет использовать HashSet или аналогичный. Иди и используй его.   -  person Sean Patrick Floyd    schedule 17.05.2018
comment
Я не совсем уверен, что понимаю, что вам нужно. Будет ли решение для индексации коллекций, такое как CQEngine, или более эффективное использование памяти, такое как fastutil, колобоке или помощь Eclipse Collections?   -  person jbduncan    schedule 17.05.2018
comment
@jbduncan Да, абсолютно. Спасибо за вашу помощь, я искал встроенное решение Guava, но это поможет.   -  person Jean-Pierre Coffe    schedule 18.05.2018
comment
Если бы вы могли опубликовать свой ответ ниже, я приму его как решение и закрою тему.   -  person Jean-Pierre Coffe    schedule 18.05.2018
comment
@Jean-PierreCoffe Готово. :)   -  person jbduncan    schedule 18.05.2018


Ответы (1)


Если вы ищете способ индексировать узлы графа, к сожалению, в Guava нет встроенной функции. Рассмотрите возможность использования CQEngine, который, насколько я понимаю, позволяет делать это для любой коллекции (например, набора узлов графа).

В качестве альтернативы, если вы просто ищете более экономичную реализацию набора, существует широкий спектр вариантов, включая, помимо прочего, Колобоке, fastutil и Коллекции Eclipse.

person jbduncan    schedule 18.05.2018