我正在使用Java中的图形库(https://github.com/aisthesis/java-graph2012获取完整上下文),并且需要覆盖未定向边的WeightedEdge类的hashCode()。也就是说,我设置了equals()覆盖方法,以便对于2个加权边e1和e2,如果满足下列条件之一,则它们是相等的(from()和to()方法返回尾部和顶部的顶点边缘):
在另一个上下文中,我想创建一个加权边的HashSet,我最终得到重复的边,除非我也覆盖hashCode()方法,以便与我的equals()重写一致。
所以,这是我的简单解决方案(我没有干涉我的Vertex类的Java默认hashCode()以及来自和引用Vertex对象):
@Override
public int hashCode() {
return from.hashCode() + to.hashCode();
}
我的推理:
第3点显然远非100%,所以我的部分问题是这是否重要。
我的一般问题:在这种情况下,这是否是覆盖hashCode()的好方法?
答案 0 :(得分:1)
如果from
和to
具有合理的hashCode()
实施,那么您的解决方案就可以了。