我无法弄清楚这里出了什么问题。此测试失败:Java:.equals()失败集(JGraphT)
@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不会覆盖等于,所以这是行不通的。我做了一种不同的方法来检查所有必要顶点之间是否存在边缘,现在它似乎工作。
'Graph.edgeSet'的类型是什么? – 2009-11-26 23:59:15
Java.util.Set –
2009-11-27 00:01:50