`
huangmiao
  • 浏览: 4651 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java HashCode为什么使用31来计算

    博客分类:
  • Java
阅读更多
String===HashCode Double源码因HashCode调用底层c。下次会详细阐述
 
源码解析: 先判断当前hash值是否为0 .如果为0 在判断他S听所存放的元数据的长度是否大于0、在把元数据放入到对象中。循环出h的大小。
注释:算出的是ascii的字符串的散列哈希。
在Effective Java 2 这本书中提到的方案是因为使用31这个数(素数)会让哈希更分散。(这个只需使用素数就可以了,java为了更规范所以采用了31)。



 

分享到:
评论

相关推荐

    java中hashcode()和equals()的详解

    在Java编程语言中,`hashCode()`和`equals()`方法是对象身份验证的关键组成部分,它们主要用于对象的比较和哈希表(如HashMap、HashSet等)的操作。理解这两个方法的工作原理对于编写高效和可靠的代码至关重要。 ...

    Java_重写equals()和hashCode()

    这就是为什么在设计类时,重写这两个方法是至关重要的,尤其是在实现集合类的元素或键值对时。 总之,理解并正确重写 `equals()` 和 `hashCode()` 方法对于编写高质量的Java代码至关重要,这直接影响到对象比较的...

    Java基础加强_ArrayList_HashSet的比较及Hashcode分析

    HashSet在插入新元素时会计算其Hashcode,根据Hashcode将元素放入哈希表的特定位置,以达到快速查找的目的。当两个对象的Hashcode相同,HashSet会调用equals()方法进一步判断它们是否真的相等。 Hashcode是一个关键...

    java 中HashCode重复的可能性

    2. 使用加密算法:使用加密算法可以将字符串转换为一个唯一的 Hash Code,避免重复。 3. 使用更复杂的 Hash Code 算法:可以使用更复杂的 Hash Code 算法,如 SHA-1、MD5 等,这些算法可以生成更唯一的 Hash Code。 ...

    javascript中实现兼容JAVA的hashCode算法代码分享

    根据文件中的描述,可以通过模拟Java的hashCode计算过程,使用JavaScript的字符串charCodeAt方法来获取字符串每个字符的ASCII值,并且采用同样的计算方式来生成哈希码。 3. **JavaScript整数溢出问题**:文件中提到...

    深入 HashCode 方法~

    - `Hashtable` 在计算 `HashCode` 时,会将 `HashCode` 的值与 `0x7FFFFFFF` 进行按位与操作,以确保结果为正整数。 - 进一步地,计算出的 `HashCode` 会通过模运算 `% hs.length` 来确定实际的数组索引位置。 4....

    深入理解Java中HashCode方法

    hashCode方法的实现方式有多种,String类的hashCode方法就是一个典型的例子,它使用数学表达式s[0]*31^(n-1) + s[1]*31^(n-2) + … + s[n-1]来计算hashCode值,其中s[i]是字符串的第i个字符,n是字符串的长度。...

    定义hashcode时使用31系数的原因

    那么,为什么使用31作为系数呢?首先,31是一个质数,它的特性是只有1和自己是因子。这使得它和其他数相乘后得到的结果比其他方式更容易产成唯一性,也就是hash code值的冲突概率最小。其次,31*N可以被编译器优化为...

    如何生成一个合适的hashcode方法Java开发Java

    在Java编程语言中,`hashCode()`方法是每个对象都具备的一个关键组成部分,它与`equals()`方法一起工作,用于对象的比较和哈希表(如`HashMap`、`HashSet`等)的操作。本篇文章将深入探讨如何在Java中生成一个合适的...

    JAVA hashCode使用方法详解

    综上所述,理解和正确使用 `hashCode()` 和 `equals()` 方法对于编写高效且符合预期的Java代码至关重要,特别是在处理集合和映射数据结构时。遵循良好的重写规范可以提高容器的性能,并避免潜在的错误。

    浅谈Java中的hashcode方法(推荐)

    当向哈希集合中添加对象时,首先会调用对象的`hashCode()`方法来计算哈希码。如果哈希码在集合中不存在,那么对象可以直接被添加,无需进一步比较。如果哈希码已经存在于集合中,那么会调用`equals()`方法来确认对象...

    hashcode的作用

    - 在上述示例中,`MyClass` 的 `hashCode()` 方法使用了一个质数(通常是31)来乘以当前的结果,并加上 `attribute1` 和 `attribute2` 的哈希值。这种做法有助于分散哈希值,减少哈希冲突的可能性。 3. **缓存机制...

    Java hashCode() 方法详细解读

    Java中的`hashCode()`方法是基于对象的内部状态计算出的一个整数值,它在处理集合特别是HashSet、HashMap等基于哈希表的数据结构时起着至关重要的作用。哈希码(Hash Code)被用来快速定位对象在哈希表中的位置,...

    Java 中HashCode作用_动力节点Java学院整理

    hashCode 的计算是通过调用对象的 hashCode() 方法来实现的,这个方法会返回一个整数值,这个整数值就是对象的 hashCode。 hashCode 的约定 在 Java 中,hashCode 有一些约定,例如: 1. 在一个应用程序执行期间...

    Java提高篇之hashCode

    在前面三篇博文中LZ讲解了(HashMap、HashSet、HashTable),在其中LZ不断地讲解他们的put和get方法,在这两个方法中计算key的hashCode应该是重要也是精华的部分,所以下面LZ揭开hashCode的“神秘”面纱。...

    重写equals和hashcode方法_equals_重写equals和hashcode方法_

    - 在 `hashCode()` 方法中,应使用对象的非空关键属性来计算哈希码,以保证不同对象的哈希码尽可能分散。 - 使用现有的工具类,如Java 7引入的`Objects.equals()` 和 `Objects.hash()`,可以减少出错的可能性。 总...

    深入HashCode

    在哈希表中,`hashCode()`被用来计算对象存储的位置,因为哈希表通过对象的哈希值来确定其存储位置,从而实现快速查找。理想情况下,不同的对象应有不同的哈希码,但相同的对象(根据`equals()`方法判断相等)必须...

    如何正确实现Java中的HashCode共6页.pdf.z

    5. **使用`Objects.hash()`**:Java 7引入了一个便捷的方法`Objects.hash()`,它可以简化`hashCode()`的实现,将多个字段的值组合成一个哈希码。 举个例子,如果我们有一个名为`Person`的类,包含`firstName`和`...

    equals与hashCode方法讲解

    equals 与 hashCode 方法讲解...equals 方法是比较两个对象的内容是否相等,而 hashCode 方法是根据对象的内容来计算哈希码。在实际开发中,我们需要根据具体情况来重写这两个方法,以确保对象的正确比较和哈希码计算。

    comparing java objects_hashcode_Comparing_

    下面将详细阐述哈希码(hashCode)和比较(Comparing)在Java中的作用以及它们在对象比较中的应用。 首先,哈希码是一个整数值,由对象的内部状态计算得出,通常用于快速查找。`hashCode()`方法是每个Java对象的...

Global site tag (gtag.js) - Google Analytics