边缘类的Java hashCode()重写
我正在用Java开发一个图形库(https://github.com/aisthesis/java-graph2012 对于完整上下文),并且需要为边不定向的WeightedEdge类重写hashCode()。也就是说,我设置了equals()覆盖方法,以便对于2条加权边e1和e2,如果满足以下条件之一,则它们相等(from()和to()方法返回边的尾部和头部顶点):边缘类的Java hashCode()重写,java,graph,hashcode,Java,Graph,Hashcode,我正在用Java开发一个图形库(https://github.com/aisthesis/java-graph2012 对于完整上下文),并且需要为边不定向的WeightedEdge类重写hashCode()。也就是说,我设置了equals()覆盖方法,以便对于2条加权边e1和e2,如果满足以下条件之一,则它们相等(from()和to()方法返回边的尾部和头部顶点): e1.from()==e2.from()&&e1.to()==e2.to()或 e1.from()==e2.to()&&e1.t
我的一般问题是:在这种情况下,这是重写hashCode()的好方法吗?如果
从
和到
有一个合理的hashCode()
实现,您的解决方案是好的。如果从
和到
有一个合理的hashCode()
实现,您的解决方案很好。向我们展示您的WeightedEdge
类。from
和to
的类型是什么?第83ff行。这些都是相关的from
和to
都是顶点对象,我没有覆盖默认的hashCode()方法。向我们展示您的WeightedEdge
类。from
和to
的类型是什么?第83ff行。这些都是相关的from
和to
都是顶点对象,我没有覆盖默认的hashCode()方法。你认为在向哈希集添加大量边时,xor ing会更快,同时还能很好地避免冲突吗?@MarshallFarrier:我没有理由认为xor会比整数加法更快,或者导致更少的冲突。我认为这两种方法都能很好地工作。你认为在向哈希集添加大量边时,xor ing会更快,同时还能很好地避免冲突吗?@MarshallFarrier:我没有理由认为xor会比整数加法更快,或者导致更少的冲突。我认为两者都应该很好地发挥作用。
@Override
public int hashCode() {
return from.hashCode() + to.hashCode();
}