探秘 hashCode() 方法(Java)
Java 中的 hashCode() 方法 - 详解
hashCode() 是 jdk 根据对象的地址、字符串或者数字算出来的 int 类型的数值。支持此方法是为了提高 hash 表的性能。
目录
正文
1. hashCode 特性
### 1.1 一致性 * 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 hashCode 比较时所用的信息没有被修改;- 如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果,注:这里说的equals(Object) 方法是指Object类中未被子类重写过的equals方法;
- 如果两个hashCode()返回的结果相等,则两个对象的equals方法不一定相等。
1.2 注意
如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不一定生成不同的整数结果。但是,应该意识到:为不相等的对象生成不同整数结果可以提高哈希表的性能。
1.3 hashCode 算法
-
Object 类的 hashCode. 返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。
-
String 类的 hashCode .根据 String 类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。
-
Integer 类,返回的哈希码就是 Integer 对象里所包含的那个整数的数值,例如 Integer i1=new Integer(100),i1.hashCode 的值就是 100 。由此可见,2 个一样大小的 Integer 对象,返回的哈希码也一样。
2. 实例
Happiness From Share.