【Java】HashCode
来源:互联网 发布:linux while循环 停止 编辑:程序博客网 时间:2024/05/21 08:01
1.JDK中对hashCode的描述
hashCode 的常规协定是: 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。 如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。 如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。 实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)以上这段官方文档的定义,我们可以抽出成以下几个关键点:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的
注:http://blog.csdn.net/fenglibing/article/details/8905007
0 0
- Java HashCode
- java hashCode
- Java hashCode
- Java HashCode
- Java HashCode
- Java hashCode
- JAVA HashCode
- Java HashCode
- 【Java】HashCode
- java hashcode()
- java hashCode
- java hashcode
- java hashcode
- Java hashCode
- java hashCode
- java hashcode
- Java hashcode
- 【java】hashCode
- 引用webservice 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
- ios UITableView 相关
- Redis Error --MISCONF Redis is configured to save RDB snapshots省略
- 常用HBase启动脚本
- IOS国际化
- 【Java】HashCode
- HDU 迷宫城堡
- adb的相关命令
- Mac OS X 10.8 启用 Web 服务器
- java的序列化
- grep用法详解:grep与正则表达式
- 难道已停止更新?百度分享疑似无人维护
- 权重轮询调度算法 java版本
- github in ubuntu