草庐IT

HashCode

全部标签

java - 证明 : why does java. lang.String.hashCode() 的实现与其文档相匹配?

java.lang.String.hashCode()的JDK文档famously说:ThehashcodeforaStringobjectiscomputedass[0]*31^(n-1)+s[1]*31^(n-2)+...+s[n-1]usingintarithmetic,wheres[i]isthe*i*thcharacterofthestring,nisthelengthofthestring,and^indicatesexponentiation.这个表达式的标准实现是:inthash=0;for(inti=0;i看着这个让我觉得我正在通过我的算法类(class)sleep。

java - 计算 java.util.hash 的 hashcode 值时使用的常量说明

谁能解释这些常量的意义以及选择它们的原因?staticinthash(inth){//ThisfunctionensuresthathashCodesthatdifferonlyby//constantmultiplesateachbitpositionhaveabounded//numberofcollisions(approximately8atdefaultloadfactor).h^=(h>>>20)^(h>>>12);returnh^(h>>>7)^(h>>>4);}来源:java-se6库 最佳答案 理解什么是好的哈希函

java - 两个不同的 Class 实例给出相同的 hashCode

我在JBoss服务器上遇到一个奇怪的问题,其中两个类生成相同的hashCode()。Classcl1=Class.forName("fqn.Class1");Classcl2=Class.forName("fqn.Class2");out.println(cl1.getCanonicalName());out.println(cl2.getCanonicalName());out.println(cl1.hashCode());out.println(cl2.hashCode());out.println(System.identityHashCode(cl1));out.printl

java - Hibernate:惰性初始化与损坏的哈希码/等于难题

我是JPA和Hibernate的新手(虽然我正在努力学习!)并且我正在努力解决一个我似乎无法找到简单解决方案的问题,所以就在这里。我有一个看起来像下面这样的实体:@Entity@Table(name="mytable1")publicclassEntityOne{//surrogatekey,databasegenerated@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id")privateLongid;//businesskey@Column(name="identifier",nullable=

java - 为什么Stream <T> collect方法返回不同的键顺序?

我有以下代码:publicenumContinent{ASIA,EUROPE}publicclassCountry{privateStringname;privateContinentregion;publicCountry(Stringna,Continentreg){this.name=na;this.region=reg;}publicStringgetName(){returnname;}publicContinentgetRegion(){returnregion;}@OverridepublicStringtoString(){return"Country[name="+n

java - 为具有浮点成员的类实现 "tolerant" `equals` & `hashCode`

我有一个带有float字段的类。例如:publicclassMultipleFields{finalintcount;finalfloatfloatValue;publicMultipleFields(intcount,floatfloatValue){this.count=count;this.floatValue=floatValue;}}我需要能够按值比较实例。现在我该如何正确实现equals和hashCode?实现equals和hashCode的常用方法是只考虑所有字段。例如。Eclipse将生成以下equals:publicbooleanequals(Objectobj){/

java - 为 hashcode、equals 和 toString 方法生成单元测试

是否有任何工具/库可以自动为我的哈希码和equals方法生成测试,查看这些方法中涉及的实例变量? 最佳答案 Guava使用this用于测试equals和hashCode的测试生成器。 关于java-为hashcode、equals和toString方法生成单元测试,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10633004/

java - 使用 System.identityHashCode(obj) - 什么时候?为什么?

什么时候是执行第4行而不是第3行的合理时间?或者它们是完全多余的调用?1Objecto1=newObject();23inthcObj=o1.hashCode();4inthcSys=System.identityHashCode(o1); 最佳答案 有时您可能想要创建一组可区分的对象。其中一些对象可能彼此相等,但您仍然需要对所有对象的引用...只是丢弃真正重复的引用。您可能会这样做,因为equals实现不是您感兴趣的实现(某些类在您确实不希望它们覆盖时会覆盖equals)或者因为您'实际上只是试图计算单独的实例等。要有效地做到这一

java - 如何将 Java 7+ 'Objects.hash()' 与数组一起使用?

我很喜欢Java7+的写法hashCode()方法:@OverridepublicinthashCode(){Objects.hash(field1,field2);}但它不能正确处理数组。以下代码:@OverridepublicinthashCode(){Objects.hash(field1,field2,array1,array2);}将不起作用,对于array1和array2常规hashCode()而不是Arrays.hashCode()将被调用。如何以正确的方式对数组使用Objects.hash()? 最佳答案 你可以试试

java - @override 注解

谁能告诉我这段代码是否:publicclassOvTester{@OverridepublicinthashCode(){returntoString().hashCode();}}确定OvTester类中的toString方法覆盖其父类(superclass)中的toString方法。我想知道这是否属实,如果属实,它是如何运作的?如果这不是真的,那么这是真的吗:“OvTester中的hashCode()方法必须覆盖其父类(superclass)中的同名方法”?如果那不正确,那什么是正确的? 最佳答案 当您在子类中重新定义具有相同签