我使用 jgrapht 库创建了一个有向图,我的顶点是我使用此代码创建的 Point 对象:
public static class Point {
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
@Override
public String toString() {
return ("[x="+x+" y="+y+"]");
}
@Override
public int hashCode() {
int hash = 7;
hash = 71 * hash + this.x;
hash = 71 * hash + this.y;
return hash;
}
@Override
public boolean equals(Object other)
{
if (this == other)
return true;
if (!(other instanceof Point))
return false;
Point otherPoint = (Point) other;
return otherPoint.x == x && otherPoint.y == y;
}
}
我可以使用 successorListOf() 检索顶点的后继者,使用前任列表Of() 检索其前身。
我想在顶点的前任与其后继者之间添加边(在我的情况下,总是只有一个前任,但有许多后继者)。所以我想做类似的事情:
directedGraph.addEdge(Graphs.predecessorListOf(directedGraph,myPoint),Graphs.successorListOf(directedGraph,myPoint));
但是这些方法不接受顶点列表作为参数,一次只接受一个顶点。虽然我应该做的是为每个后继者和前任者自动创建一个 Point 对象,但这似乎不合适,因为这些元素已经是顶点,所以它们也是 Point 对象。
我怎样才能做到这一点 ?我不知道如何根据继任者或前任列表创建对象。这是处理这个问题的正确方法吗?