如何在 JGraphT 中复制图形?

Dan*_*kov 5 java graph jgrapht

我需要复制一个简单的图表。

我在图形生成器中没有看到图形复制器,并且 UndirectedGraph 没有实现克隆方法。

那一年,我可以用手抄一张图。但我想用一行来做这件事。

And*_*ose 4

无向图是一个接口。然而,大多数具体子类(例如SimpleGraph)都扩展了AbstractBaseGraph,它实现了clone() 方法。

所以,如果你能保证你手里的UndirectedGraph继承自AbstractBaseGraph,只需强制转换为AbstractBaseGraph并调用clone方法即可。

public void someMethod(UndirectedGraph g)
{
  // Do some stuff...

  ((AbstractBaseGraph)g).clone(); // <== Your 1-liner

  // Do some more stuff...
}
Run Code Online (Sandbox Code Playgroud)

但请记住,根据 JavaDoc,clone() 方法执行浅克隆。因此,图实例被克隆,但其中的顶点和边却没有被克隆。