Я создал орграф, используя библиотеку 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(), а ее предшественников — с помощью PregenceListOf().
Я хотел бы добавить ребра между предшественником вершины и ее преемниками (в моем случае всегда есть только один предшественник, но много преемников). Итак, я хотел бы сделать что-то вроде:
directedGraph.addEdge(Graphs.predecessorListOf(directedGraph,myPoint),Graphs.successorListOf(directedGraph,myPoint));
Но эти методы не принимают в качестве аргументов список вершин, а только одну вершину за раз. Что я должен сделать, так это автоматически создать объект Point для каждого преемника и для предшественника, но это не кажется подходящим, поскольку эти элементы уже являются вершинами, поэтому они также являются объектами Point.
Как я могу это сделать ? Я не знаю, как создавать объекты на основе списка преемников или предшественников. Это правильный способ справиться с этим?