根据列表的元素自动创建对象

Automatically create objects based on a list's elements

我使用 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() 检索顶点的后继,使用 predecessorListOf() 检索其前导。

我想在顶点的前驱和后继之间添加边(在我的例子中,总是只有一个前驱,但有很多后继)。所以我想做类似的事情:

directedGraph.addEdge(Graphs.predecessorListOf(directedGraph,myPoint),Graphs.successorListOf(directedGraph,myPoint));

但是这些方法不会将顶点列表作为参数,一次只能将一个顶点作为参数。 我应该做的是为每个后继者和前任者自动创建一个 Point 对象,但这似乎不合适,因为这些元素已经是顶​​点,所以它们也是 Point 对象。

我该怎么做?我不知道如何根据继任者或前任列表创建对象。这是处理这个问题的正确方法吗?

我不知道 jgrapht 库,但你不能简单地遍历前继点列表吗:

for (Point predecessor : Graphs.predecessorListOf(directedGraph, myPoint)) {
    for (Point successor : Graphs.successorListOf(directedGraph, myPoint)) {
        directedGraph.addEdge(predecessor, successor);
    }
}