黑马程序员技术交流社区
标题:
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