我无法弄清楚这里出了什么问题。此测试失败:
@Test
public void testSimpleCase() {
assertTrue(JGraphtUtilities.graphEquality(ChooseRootTest.generateSimpleCaseGraph(), ChooseRootTest.generateSimpleCaseGraph()));
}
public static <V, E> boolean graphEquality(Graph<V, E> g0, Graph<V, E> g1) {
boolean result = true;
if (g0.edgeSet().equals(g1.edgeSet()) && g0.vertexSet().equals(g1.vertexSet())) {
for (E e : g0.edgeSet()) {
if (g0.getEdgeWeight(e) != g1.getEdgeWeight(e)) {
result = false;
}
}
}
else {
return false; //for the above test, this is what is returned
}
return result;
}
调试器显示该方法确定两个顶点集和边集不相等,因此返回 false。这怎么可能?
旁注:我正在尝试为 JGraphT 图编写相等检查。这怎么可能还没有完成?
更新:我认为 DefaultWeightedEdge 不会覆盖等于,所以那是行不通的。我做了一种不同的方法来检查所有必要顶点之间是否存在边,现在它似乎可以工作了。