码迷,mamicode.com
首页 > 编程语言 > 详细

java hashcode

时间:2015-03-02 16:23:02      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

java.lnag.Object中对hashCode的约定:

   1. 在一个应用程序执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话(也就是说这个对象的成员没有被改变),则对该对象调用hashCode方法多次,它必须始终如一地返回同一个整数。 

个人理解:对象A, 在使用对象A之前,它的hashcode是20,如果在程序运行期间使用了对象A,但是没有修改对象A的成员,则它的hashcode仍然是20.

 


   2. 如果两个对象根据equals(Object o)方法是相等的(即这2个对象是内存地址是一样的),则调用这两个对象中任一对象的hashCode方法必须产生相同的整数结果。

个人理解:2个内存地址相同的对象,在某种意义上说就是一个,所以它的hashcode是一样的。

 


   3. 如果两个对象根据equals(Object o)方法是不相等的,则调用这两个对象中任一个对象的hashCode方法,不要求产生不同的整数结果。但如果能不同,则可能提高散列表的性能。

   


有一个概念要牢记,两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。

所以hashcode相等只能保证两个对象在一个HASH表里的同一条HASH链上,继而通过equals方法才能确定是不是同一对象,如果结果为true, 则认为是同一对象不在插入,否则认为是不同对象继续插入。

 

即。如果hashcode相同,而且equals相同,则认为是同一对象。

 

 

java hashcode

标签:

原文地址:http://www.cnblogs.com/chenyu123/p/4308925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!