我已经看过Apache Commons Lang的HashCodeBuilder和Eclipse hashCode()生成。我不得不说Eclipse的hashCode()非常难看,但是在性能方面最好用作HashCodeBuilder(因为构建器需要额外的对象创建)?
我也想知道你对equals()生成和Commons Lang的EqualsBuilder的看法。
如果你有更好的解决方案,请发布它们:)
答案 0 :(得分:3)
HashCodeBuilder
比编写自己的哈希函数慢得多。它使用反射迭代每个字段。如果您经常调用此方法,您可能会看到性能损失,这可能会或可能不会对您的情况造成影响。
eclipse生成的hashCode
函数使用素数来帮助创建更好的哈希函数。 Why use a prime number in hashCode?有一些关于原因的详细信息
答案 1 :(得分:0)
规则是
相等的对象应该生成相同的哈希码, 相等的哈希码并不意味着对象是相等的
答案 2 :(得分:0)
您必须在此处选择性能和可维护性。公共版本将适应类的变化,但速度较慢。 Eclipse生成的版本很快,但在添加新字段后不会更新,这使得维护更加困难。