В настоящее время я использую Graphstream API для Java для своего проекта.
Я не хочу удалять или добавлять узлы по команде. С JFrame & co. Я инициализировал консоль, поэтому могу просто вставить «addNode ()» или «removeNode (id)», чтобы получить результат.
Интерфейс показывает узлы с номерами рядом с ними (ID).
Когда я удаляю один узел, я хочу, чтобы все узлы с более высоким идентификатором изменили свой идентификатор, но я так и не придумал способ изменить ID одного узла.
F.e. У меня есть:
graph.addNode(0);
graph.addNode(1);
graph.addNode(2);
При удалении узла:
graph.removeNode(0);
Я хочу изменить 1,2 на 0,1 без повторной инициализации всего графика.
Есть ли способ добиться такого поведения? Я подумал о чем-то вроде:
graph.getNode(1).setID(0);
К сожалению, у меня есть доступ только к .getID (), и я не могу управлять им таким образом.
Спасибо




Идентификаторы узлов представляют собой строки, и они неизменяемы (без переименования, без setId()).
Теперь то, что вы делаете в своем примере, отличается. Вы используете доступ к узлам на основе индекса. Индексы являются целыми числами и соответствуют произвольным узлам в графе, они не связаны с идентификаторами.
Когда вы выполняете graph.addNode(0), целое число преобразуется в нить"0". Затем, когда вы выполняете graph.removeNode (0), вы удаляете узел, который был проиндексирован как первый из списка узлов. Но это должен быть узел с этим идентификатором "0".
Вы можете удалить узлы с индексом (целым числом) 0, пока есть узлы в графе (graph.removeNode(0)), но вы можете удалить только один узел с идентификатором "0" один раз (graph.removeNode("0")).
Спасибо, я понимаю это поведение, данное узлами графического потока.