0

我目前在我的项目中使用 Graphstream API for Java。

我不想在命令中删除或添加节点。与 JFrame & co. 我初始化了一个控制台,所以我可以插入“addNode()”或“removeNode(id)”以获得结果。

界面显示节点旁边有一个数字(ID)。

当我删除一个节点时,我希望所有具有更高 ID 的节点都更改其 ID,但我没有找到一种方法 jet 来更改一个节点的 ID。

我有:

    graph.addNode(0);
    graph.addNode(1);
    graph.addNode(2);

删除节点时:

    graph.removeNode(0);

我希望 1,2 更改为 0,1 而无需重新初始化整个图形。

有没有办法实现这种行为?我想到了类似的东西:

    graph.getNode(1).setID(0);

不幸的是,我只能访问 .getID() 并且不能以这种方式操作它。

谢谢

4

1 回答 1

0

节点 id 是字符串,它们是不可变的(没有重命名,没有setId())。

现在你在你的例子中做的是不同的。您正在使用基于索引的节点访问。索引是整数,对应于图中的任意节点,它们与 id 无关。

当您这样做graph.addNode(0)时,整数将转换为 字符串 "0"。然后,当您执行 graph.removeNode(0) 时,您将删除一个被索引为节点列表的第一个的节点。但它必须是这个 id 的节点"0"

只要图中存在节点(graph.removeNode(0)),您就可以删除索引(整数)为 0 的节点,但您只能删除一次具有 id 的节点"0"graph.removeNode("0"))。

于 2018-06-14T07:41:06.157 回答