Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Commons Lang HashCodeBuilder与Eclipse hashCode()生成_Java_Eclipse_Equals_Apache Commons_Hashcode - Fatal编程技术网

Java Commons Lang HashCodeBuilder与Eclipse hashCode()生成

Java Commons Lang HashCodeBuilder与Eclipse hashCode()生成,java,eclipse,equals,apache-commons,hashcode,Java,Eclipse,Equals,Apache Commons,Hashcode,我看过ApacheCommonsLang的HashCodeBuilder和EclipseHashCode()生成。我不得不说Eclipse的hashCode()非常难看,但就性能而言,作为HashCodeBuilder使用是否更好(因为构建器需要额外的对象创建) 我还想知道您对equals()一代和Commons Lang的EqualsBuilder的看法 如果您有更好的解决方案,请也发布:)HashCodeBuilder比编写自己的哈希函数慢得多。它使用反射来迭代每个字段。如果您经常调用此方法

我看过ApacheCommonsLang的HashCodeBuilder和EclipseHashCode()生成。我不得不说Eclipse的hashCode()非常难看,但就性能而言,作为HashCodeBuilder使用是否更好(因为构建器需要额外的对象创建)

我还想知道您对equals()一代和Commons Lang的EqualsBuilder的看法


如果您有更好的解决方案,请也发布:)

HashCodeBuilder比编写自己的哈希函数慢得多。它使用反射来迭代每个字段。如果您经常调用此方法,您可能会看到性能下降,这对于您的情况可能是可以容忍的,也可能是不可以容忍的


eclipse生成的
hashCode
函数使用素数来帮助创建更好的散列函数。详细介绍了为什么HashCodeBuilder和EqualBuilder比默认方法更好,但如果您关心性能,最好编写自己的hashcode和equals方法。这是因为它们使用反射方法

规则是

相等的对象应生成相同的哈希代码,
相等的hashcode并不意味着对象相等

您必须在性能和可维护性之间进行选择。commons版本将适应类的变化,但速度较慢。Eclipse生成的版本速度很快,但在添加新字段后不会更新,这使其更难维护。

对于程序员来说,这可能是一个更好的问题。SE.Eclipse的hashCode是什么意思?Eclipse有一个名为
Generate hashCode()和equals()的函数
Source
meu下,该meu允许您通过选择要生成hashCode的字段来生成方法。我想用
append()
方法手动附加我想要的每个字段,而不是反射方法。或者它没有使用附加字段的
hashCode()
,并通过反射计算hashCode?如果您使用的是appendMethod,那么它看起来好像没有使用反射。