我正在寻找一种避免在我的有向图中创建重复项的方法(我使用jgrapht库).
我读了一些据说要使用的主题:directedGraph.setCloneable(false);
但它似乎不对,在图书馆的文档中找不到它,我在这一行上得到一个错误,说它不存在.
我用以下方法创建了图表:
public static DirectedGraph directedGraph = new DefaultDirectedGraph(DefaultEdge.class);
然后它根据泛光填充算法为它添加顶点(在算法遍历每个点时添加顶点和边,下面是它的一部分):
// Up
xToFillNext = x-1;
yToFillNext = y;
if (xToFillNext==targetX && yToFillNext==targetY && !forbiddenDirection.equals(Direction.UP)) {
Point myPoint = new Point(x, y);
Point myNextPoint = new Point(xToFillNext, yToFillNext);
directedGraph.addVertex(myPoint);
directedGraph.addVertex(myNextPoint);
directedGraph.addEdge(myPoint, myNextPoint);
return true;
} else if (xToFillNext>=0 && originValue==matrix[xToFillNext][yToFillNext] && !forbiddenDirection.equals(Direction.UP)) {
Point myPoint = new Point(x, y);
Point myNextPoint = new Point(xToFillNext, yToFillNext);
directedGraph.addVertex(myPoint);
directedGraph.addVertex(myNextPoint);
directedGraph.addEdge(myPoint, myNextPoint);
fillingReachedTargetPosition =
fillReachesTargetPosition(matrix, xToFillNext, yToFillNext, targetX, targetY, fillValue, Direction.DOWN );
if (fillingReachedTargetPosition) {
return true;
}
}
但是当我打印顶点列表时,我需要摆脱重复,或者避免创建它们.有办法吗?
编辑:我创建了一个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+"]");
}
}