本帖最后由 caixingke 于 2014-9-29 16:24 编辑
不是内存地址.
Object中的hashCode()是native代码, 看不到里面的实现:
public native int hashCode();
其实对于一般的开发者来说, 不用太关心其内部的实现了.
哈希算法, 一开始实际上是做为一种快速的查找算法.
因为y=f(x)是一种很简单粗暴的方式. 查找时大大减少了比较数据的次数.
如果出现冲突(即, 两个数据的哈希值相等时), 那么仍然是要比较的. 在java中, equals就可以用于冲突时的比较.
也因此 HashSet和HashMap的元素的排序是依据于hashCode():int和equals(Object):boolean这两个方法了.
以上只是简略的一种解释.
实际上 哈希算法的应用是非常广泛的.
对哈希算法的思想的理解是很重要的.
|