哈希(3) java中的hashcode

看看jdk api中对object类的描述

1.http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

2首先你要知道每个对象都有一个hashcode,是int了类型的,可能不同的对象的会有相同的hashcode(冲突),所以判断两个对象是否相等要通过equals方法,跟上文中的hash索引思路是一致。

3.其次hash是快速查找的,查找什么呢?查找对象,在我们的程序中会有大量的对象,当然需要快速的查找了。

4。我们看看对象头,对于一个普通对象头的长度是2个字,数组是3个字,为什么多一个呢?第三个字,存的是数组的长度,在c++ 要传递数组的长度,但是 java就不用啊,因为对象自己保存.我们看看这个对象的头,还会看到一些线程相关的信息,垃圾回收相关的信息。以后慢慢看,

http://www.cnblogs.com/mengheng/p/3491304.html

 

5.最后,就是equals和hashcode之间的关系,这是经典的问题?

两个对象相等意思是:   对象1.equals(对象2)==true;

相等的对象hashcode一定是相等的。

所以  equals  ----推出-----   hashcode相等

同时因为hashcode相等,也可能对象不相等,因为会产生冲突啊。

根本不用记忆的

 

posted @ 2014-07-06 21:59  hansongjiang8  阅读(145)  评论(0编辑  收藏  举报