여기에 무슨 문제가 있는지 알 수 없습니다.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가 equals를 대체하지 않기 때문에 작동하지 않습니다. 저는 모든 꼭지점 사이에 모서리가 있는지 확인하는 다른 방법을 사용했습니다. 이제는 작동하는 것처럼 보입니다. the JavaDocDefaultWeightedEdge
따르면
'Graph.edgeSet'의 유형은 무엇입니까? –
Java.util.Set –