hashcode的作用_jdbc hibernate区别_java hashcode相同(2)

电脑杂谈  发布时间:2017-03-08 18:10:33  来源:网络整理

* <code>.equals</code> must answer the same value for this

* method.

*

* @author OTI

* @version initial

*

* @return int

* the receiver's hash.

*

* @see #equals

*/

public native int hashCode();

从上面我们可以看到是否很可能Object.hashCode就是代表内存地址。下面我们来证明hashcode是不是真的就是Object的内存地址呢?实际上,hashcode根本不能代表object的内存地址。

-----------------------------------------

Object.hashCode不可以代表内存地址

----------------------------------------

package com.tools;

import java.util.ArrayList;

/**

* 此方法的作用是证明 java.lang.Object的hashcode 不是代表 对象所在内存地址。

* 我产生了10000个对象,这10000个对象在内存中是不同的地址,但是实际上这10000个对象

* 的hashcode的是完全可能相同的

*/

public class HashCodeMeaning {

public static void main(String[] args) {

ArrayList list = new ArrayList();

int numberExist=0;

//证明hashcode的值不是内存地址

for (int i = 0; i < 10000; i++) {

Object obj=new Object();

if (list.contains(obj.toString())) {

System.out.println(obj.toString() +" exists in the list. "+ i);

numberExist++;

}

else {

list.add(obj.toString());

}

}

System.out.println("repetition number:"+numberExist);

System.out.println("list size:"+list.size());

//证明内存地址是不同的。

numberExist=0;

list.clear();

for (int i = 0; i < 10000; i++) {

Object obj=new Object();

if (list.contains(obj)) {

System.out.println(obj +" exists in the list. "+ i);

numberExist++;

}

else {

list.add(obj);

}

}

System.out.println("repetition number:"+numberExist);

System.out.println("list size:"+list.size());

}

}

==============================

看HashTable的源代码非常有用:

==============================

==============================


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36492-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...