public int hashCode() {
int h = hash;
if (h == 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
实际上是使用霍纳法则计算
即
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] 的值
选择31是因为他为素数,且他等于左移5位-1的值,vm会自动做这种优化
http://book.douban.com/subject/1610337/ lafore的这本书写的很人性化,没有太多公式,适合入门,第11章讲到了这部分
http://en.wikipedia.org/wiki/Java_hashCode()
http://stackoverflow.com/questions/299304/why-does-javas-hashcode-in-string-use-31-as-a-multiplier
http://www.ibm.com/developerworks/java/library/j-jtp05273/index.html
分享到:
相关推荐
安装npm install string-hashcode 例子var hashCode = require ( 'string-hashcode' ) ;var s = 'abc' ;console . log ( s . hashCode ) ; // undefinedvar code = hashCode ( s ) ;console . log ( s . hashCode ) ...
Java 中HashCode重复的可能性 Java 中的 HashCode 重复可能性是 Java 开发中一个常见的问题。 HashCode 是 Java 中一个重要的概念,它用于标识对象的唯一性。然而,Hash Code 有可能重复,这会导致程序出错。下面...
"Java中Hashcode的作用" Hashcode是Java编程语言中一个非常重要的概念,它在equals方法中扮演着关键角色。在Java中,每个对象都具有一个独特的Hashcode,它可以用来标识对象的身份。但是Hashcode是什么?它是如何...
Java中String类的hashCode方法采用特定的算法,即:初始时,哈希码值为0,然后以字符为单位,对于字符串中的每一个字符,都使用31乘以当前哈希码,然后加上当前字符的ASCII值,然后更新哈希码。 2. **JavaScript中...
### Java String对象的经典问题 #### 一、String 类与对象机制概述 在Java中,`String`类是一个非常重要的类,它提供了丰富的功能用于处理文本数据。`String`类是不可变的(immutable),这意味着一旦一个`String`...
在Java中,hashCode方法的实现方式有多种,例如,使用String类的hashCode方法,使用数学表达式来计算hashCode值。同时,Java还提供了一些工具类和方法来帮助开发者实现hashCode方法,例如,Guava库中的Hashing类,它...
### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...
在Java编程语言中,`String`类是使用最频繁的类之一,它代表不可变的字符序列。本文将深入解析`String`类的一些常用方法,帮助开发者更好地理解和使用这个核心类。 1. **构造方法** - `String()`:创建一个空字符...
### Java 高级特性详解 #### 一、`hashCode` ...正确地重写 `equals` 和 `hashCode` 方法、使用 `Comparator` 进行排序、利用反射机制和序列化技术,以及实现 `clone` 方法都是开发高质量 Java 应用程序的重要技能。
### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`与`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...
在Java编程语言中,`String`类是使用最广泛的类之一,主要用来处理文本字符串。字符串在Java中被视为不可变对象,这意味着一旦创建了一个`String`对象,就不能更改它的值。下面我们将深入探讨`String`类的一些关键...
"Java String转换时为null的解决方法" 在Java开发中,我们经常会遇到从集合类List、Map中取出数据转换为String的问题,但如果处理不好,经常会遇到空指针异常java.lang.NullPointerException。因此,了解Java ...
"Java重写equals及hashcode方法流程解析" Java中的equals和hashCode方法是两个非常重要的方法,它们都是Object类中的方法。在实际开发中,正确地重写这两个方法对于确保程序的正确性和性能至关重要。下面,我们将...
"Java中equals、hashcode和==的区别" Java 中 equals、hashcode 和==的区别是 Java 编程语言中一个经常遇到的问题。这三个概念都是用来比较对象的,但是它们之间存在着本质的区别。 首先,==号是Java中的一个...
在Java编程语言中,`hashCode()` 和 `equals()` 方法对于对象的比较和处理至关重要,尤其在集合类(如Set和Map)中。这两个方法都源自`java.lang.Object`类,因此所有的Java类都默认继承了它们。理解并正确地重写这...
Java中的`String`类是编程中非常基础且重要的部分,它代表不可变的字符序列。在Java中,字符串被广泛用于各种操作,如拼接、比较、搜索、格式化等。`String`类位于`java.lang`包中,是所有Java程序的默认组成部分,...
在Java编程语言中,面向对象基础是学习Java的基石,而`String`类则是最常用的类之一,几乎在每一个程序中都会见到它的身影。本章节将深入探讨`String`类的常用方法,帮助你更好地理解和运用这个核心组件。 `String`...
equals 方法和 hashCode 方法是 Java 语言中两个重要的方法,它们都是在 Object 类中定义的。equals 方法用于比较两个对象是否相等,而 hashCode 方法用于返回对象的哈希码。 在 Java 的 Object 类中,equals 方法...