我無法弄清楚這裏出了什麼問題。此測試失敗: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