草庐IT

hashCodes

全部标签

java - 为什么 hashCode() 在所有连续执行中为对象返回相同的值?

我正在尝试编写一些有关java中对象相等性的代码。正如我在某处读到的hashCode()isanumberwhichisgeneratedbyapplyingthehashfunction.HashFunctioncanbedifferentforeachobjectbutcanalsobesame.Attheobjectlevel,itreturnsthememoryaddressoftheobject.现在,我有了示例程序,我连续运行了10次。每次我运行该程序时,我都会得到与哈希码相同的值。如果hashCode()函数返回对象的内存位置,java(JVM)如何在连续运行中将对象存储

java - 如何识别已被不当拒绝的 Java URI hashCode() 错误

JavaObject契约的一个基本部分是hashCode()方法应该与equals()方法一致。这是有道理的,也很容易理解:如果两个对象在某种程度上“相等”,它们应该返回相同的哈希码。如果不是,您可以将一个对象放入HashSet中,例如,然后检查集合中是否有一个单独的实例并错误地返回false,甚至尽管equals()方法会认为对象是等价的。事实上Java的URI代码从Java6开始就有这个问题。试试这个代码:importstaticorg.hamcrest.CoreMatchers.*;importstaticorg.junit.Assert.*;importjava.net.URI

java - 在 Java 中生成 JAXB 类时添加 toString、hashCode、equals

我正在尝试使用Java以编程方式从XSD文件生成JAXB类。我使用以下代码片段来实现这一点:....importjava.io.File;importjava.io.IOException;importorg.xml.sax.InputSource;importcom.sun.codemodel.JCodeModel;importcom.sun.tools.xjc.api.S2JJAXBModel;importcom.sun.tools.xjc.api.SchemaCompiler;importcom.sun.tools.xjc.api.XJC;........publicstatic

java - 覆盖持久实体的 hashCode () 和 equals () 方法的正确方法是什么?

我有一个简单的类角色:@Entity@Table(name="ROLE")publicclassRoleimplementsSerializable{@Id@GeneratedValueprivateIntegerid;@ColumnprivateStringroleName;publicRole(){}publicRole(StringroleName){this.roleName=roleName;}publicvoidsetId(Integerid){this.id=id;}publicIntegergetId(){returnid;}publicvoidsetRoleName(

java - Collections.unmodifiableCollection() 的 hashCode 和 equals

Collections类有很多静态辅助方法来提供各种集合类型的只读View,比如unmodifiableSet(),unmodifiableList()等。对于这些View对象,hashCode()和equals()方法将调用转发到基础集合...有一个奇怪的异常(exception):unmodifiableCollection().JavaDocexplicitlystates:ThereturnedcollectiondoesnotpassthehashCodeandequalsoperationsthroughtothebackingcollection,butreliesonO

java - Object.hashCode() 算法

我正在寻找Object.hashCode()的算法。此代码原生于Object.java.这是因为(a)代码在汇编中——从来没有用过Java或任何其他HLL或(b)它根本没有被公开?在任何一种情况下,我都希望掌握“hashCode()是如何计算的”算法(伪代码或一些详细解释)——进入它的参数是什么计算和计算本身?请注意:它是hashCode()ofObject我在找-不像String或hashMap/table那样。//========================================================================newJavadocs--

java - java Object中hashCode的实现是怎样的?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowishashCode()calculatedinJava我发现Java中根类Object的hashCode()方法没有实现:publicnativeinthashCode();如果我有一个Objecta和一个Objectb,我怎么知道a.hashCode()和b.hashCode()值而不使用System.out.println()?仅通过hashCode实现。我尝试新建两个ArrayList对象,令我大吃一惊的是hashCode()值是相同的:它们都是1.

java - 您可以只在 hashCode() 方法中返回字段的 hashCode() 值吗?

在审查大型代码库时,我经常遇到这样的情况:@OverridepublicinthashCode(){returnsomeFieldValue.hashCode();}程序员不是为类生成他们自己的唯一哈希码,而是简单地从字段值继承哈希码。我的直觉(也可能是消化问题)告诉我这是错误的,但我无法确定。这种实现会出现什么问题(如果有的话)? 最佳答案 如果您想基于单个属性散列对象,这很好。例如,在Person类中,您可能有一个唯一标识Person的ID属性,因此hashCode()Person可以简单地是该ID的哈希值。此外,hashCod

java - hashCode唯一性

是否有可能Object的两个实例具有相同的hashCode()?理论上一个对象的hashCode是从它的内存地址派生出来的,所以所有的hashCode应该是唯一的,但是如果对象在GC期间被移动了怎么办? 最佳答案 我认为docsforobject'shashCodemethod说出答案。"Asmuchasisreasonablypractical,thehashCodemethoddefinedbyclassObjectdoesreturndistinctintegersfordistinctobjects.(Thisistypic

java - 我应该单元测试hashCode/equals/toString吗?

编写Java类时,使用IDE生成方法的情况并不少见,例如toString()equals()hashCode()但是,一旦使用IDE生成了它们,它们便成为了代码库的一部分(在SCM中),因此,所有质量度量手段都适用。特别是equals和hashcode方法包含许多条件。如果我不编写单元测试,则代码覆盖率(行,条件,突变)的得分会很低,尤其是在被测类不是那么大的情况下。一些覆盖率工具支持过滤(即cobertura),而其他工具(即jacoco)则不支持。但是覆盖率工具仅显示一种症状-未经测试的代码-因此,我不是在问是否要抑制/忽略该症状,而是要如何解决根本原因。问题是:我应该为这些方法编