A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 更上一层 中级黑马   /  2014-9-29 13:00  /  1143 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类的hashCode()方法是不是默认代表对象的内存地址啊,如果不是请大神指教

1 个回复

倒序浏览
本帖最后由 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这两个方法了.


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





回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马