Java jGraphT定向加权乘法器中的等顶点

Java jGraphT定向加权乘法器中的等顶点,java,equals,directed-graph,jgrapht,Java,Equals,Directed Graph,Jgrapht,我想要一个带有“自定义”顶点和边的DirectedWeightedMultigraph。 对于这段代码,我希望只有三个顶点,因为v1和v4具有相同的关键点,但我有四个 DirectedWeightedMultigraph<Vertex, Edge> graph = new DirectedWeightedMultigraph<Vertex, Edge>(Edge.class); Vertex v1 = new Vertex("a", "o1"

我想要一个带有“自定义”顶点和边的DirectedWeightedMultigraph。 对于这段代码,我希望只有三个顶点,因为v1和v4具有相同的关键点,但我有四个

         DirectedWeightedMultigraph<Vertex, Edge> graph = new DirectedWeightedMultigraph<Vertex, Edge>(Edge.class);

     Vertex v1 = new Vertex("a", "o1");
     Vertex v2 = new Vertex("b", "o2");
     Vertex v3 = new Vertex("c", "o1");
     Vertex v4 = new Vertex("a", "o3");

     graph.addVertex(v1);
     graph.addVertex(v2);
     graph.addVertex(v3);
     graph.addVertex(v4);
     System.out.println("#vertex: "+ graph.vertexSet().size());
}

在使用边之前,我阅读了关于顶点和边的equals和hashCode。我也试着用偏执图,但不管用。为了解决这个问题,我选择在添加顶点之前“手动”检查具有特定关键点的顶点是否在顶点集中。但我忽略了代码中的错误。我仍然有四个顶点:

         List<Vertex> rowVertices = new ArrayList<Vertex>();
     rowVertices.add(v1);
     rowVertices.add(v2);
     rowVertices.add(v3);
     rowVertices.add(v4);

     Iterator it = rowVertices.iterator();
     while (it.hasNext()) {
         Vertex currentVertex = (Vertex) it.next();

         if (!currentVertex.isAVertex(graph.vertexSet())) {
             graph.addVertex(currentVertex);
         }           
     }

     System.out.println("#vertex: "+ graph.vertexSet().size());
列出行顶点=新建ArrayList();
添加(v1);
添加(v2);
添加(v3);
添加(v4);
Iterator it=rowVertices.Iterator();
while(it.hasNext()){
顶点currentVertex=(顶点)it.next();
如果(!currentVertex.isAVertex(graph.vertexSet())){
图.addVertex(currentVertex);
}           
}
System.out.println(“#vertex:+graph.vertexSet().size());

现在正在工作。。。但是
isAVertex()
方法中
if(this.equals(v))
的奇怪行为。事实上,我将这个条件语句分为两个类(实现方式完全相同),但它在一个类中工作,在另一个类中,我需要使用
if(this.key.equals(v.key))
。怎么了???
public class Edge {

int cost;   
         List<Vertex> rowVertices = new ArrayList<Vertex>();
     rowVertices.add(v1);
     rowVertices.add(v2);
     rowVertices.add(v3);
     rowVertices.add(v4);

     Iterator it = rowVertices.iterator();
     while (it.hasNext()) {
         Vertex currentVertex = (Vertex) it.next();

         if (!currentVertex.isAVertex(graph.vertexSet())) {
             graph.addVertex(currentVertex);
         }           
     }

     System.out.println("#vertex: "+ graph.vertexSet().size());