JUNG - 如何在Graph中获得精确的顶点?

时间:2009-12-25 08:35:31

标签: jung

我必须创建一个具有自定义节点类型和节点&连接是从txt文件中逐个读取的。

文件格式如下:startNode attibutes endNode。

每当我读一行时,我创建了2个节点对象:startNode&终端节点。并在它们之间添加边缘..

但是,startNode可能存在于几行......

e.g。 V1 ... V2; V1 ... V3

因此,在添加边缘之前,我必须检查我的图形是否包含节点。我应该使用图形中的顶点而不是新创建的节点。

荣格有没有内置的方法来解决这个问题? 还是有什么建议吗?

2 个答案:

答案 0 :(得分:2)

简短的回答是:通过合同,只要您的自定义节点/边缘对象的equals()hashCode()实现了正确的事情,JUNG的图形实现就会为您解决这个问题。< / p>

如果您尝试将一个顶点添加到图形中并且它已经存在于图形中,那么addVertex()方法将返回false(意思是“没有完成”),就像使用类似的add()方法一样Set

另请注意,addEdge()方法会将连接的顶点添加到图表中(如果它们尚未存在)。

答案 1 :(得分:1)

JUNG认为顶点(和边)不同,只要它们被引用到不同的对象上即可。如果创建两个具有相同属性的顶点对象,它们将被视为不同的顶点,您可以将它们插入到图形中。 JUNG没有一个equals方法,你可以覆盖(检查顶点对象的属性)来检查两个顶点对象是否相同。因此,您需要手动维护图形中的顶点(和边)列表,以避免添加图形中已有的顶点。但是,您可以使用HashMap轻松完成此操作(如果您的图形不是太大)。