我必须创建一个具有自定义节点类型和节点&连接是从txt文件中逐个读取的。
文件格式如下:startNode attibutes endNode。
每当我读一行时,我创建了2个节点对象:startNode&终端节点。并在它们之间添加边缘..
但是,startNode可能存在于几行......
e.g。 V1 ... V2; V1 ... V3
因此,在添加边缘之前,我必须检查我的图形是否包含节点。我应该使用图形中的顶点而不是新创建的节点。
荣格有没有内置的方法来解决这个问题? 还是有什么建议吗?
答案 0 :(得分:2)
简短的回答是:通过合同,只要您的自定义节点/边缘对象的equals()
和hashCode()
实现了正确的事情,JUNG的图形实现就会为您解决这个问题。< / p>
如果您尝试将一个顶点添加到图形中并且它已经存在于图形中,那么addVertex()
方法将返回false(意思是“没有完成”),就像使用类似的add()
方法一样Set
。
另请注意,addEdge()
方法会将连接的顶点添加到图表中(如果它们尚未存在)。
答案 1 :(得分:1)
JUNG认为顶点(和边)不同,只要它们被引用到不同的对象上即可。如果创建两个具有相同属性的顶点对象,它们将被视为不同的顶点,您可以将它们插入到图形中。 JUNG没有一个equals方法,你可以覆盖(检查顶点对象的属性)来检查两个顶点对象是否相同。因此,您需要手动维护图形中的顶点(和边)列表,以避免添加图形中已有的顶点。但是,您可以使用HashMap轻松完成此操作(如果您的图形不是太大)。