黑马程序员技术交流社区

标题: hashcode代表什么? [打印本页]

作者: 更上一层    时间: 2014-9-29 13:00
标题: hashcode代表什么?
类的hashCode()方法是不是默认代表对象的内存地址啊,如果不是请大神指教

作者: zuochbd    时间: 2014-9-29 16:21
本帖最后由 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这两个方法了.


以上只是简略的一种解释.
实际上 哈希算法的应用是非常广泛的.
对哈希算法的思想的理解是很重要的.










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2