Object类里面有一个hashCode()方法,根据对象的地址来计算哈希码。
但是一般的类都重写了hashCode()方法,根据有意义的实例变量(equals()方法比较标准的实例变量)计算出一个hashCode值。
像HashSet中删除一个对象,会先计算出该对象的hashCode值,从而找到该对象在集合中的保存位置。请问这里的hashCode值不是根据地址计算出来的,怎么能找到对象的存储位置啊???
------解决思路----------------------
该存储位置是由HashSet或者HashMap内部的具体结构所决定,如果是HashMap,里面可能有一个类似数组的存储空间
通过hashCode找到该“数组”的下标
------解决思路----------------------
看JDK源码是最好的方式
------解决思路----------------------
因为比如HashSet之类的,元素唯一、无须,所以他需要一个找到元素的标致,这个标志就用的hashCode,
他说的通过hashCode找到位置,不是说直接在内存中找到,而是说的在JVM代码级别找到。
------解决思路----------------------
推荐直接看代码.... 并不难
hashMap 还是用到了类本身的hasCode, 只不过又加入了一点别的算法...
另外, 这是在数据结构里找对象, 并不是在内存中搜索的.....
------解决思路----------------------
一般hashcode()方法是根据你的需要来重写的。
个人感觉hashcode方法只是为了减少找到某个对象的时间,并不是能唯一定位对象,一个hashcode可以对应好多个对象。