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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 炉海佳 高级黑马   /  2013-4-8 23:24  /  1145 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 炉海佳 于 2013-4-9 20:47 编辑

如题,举例说明!最好告诉我视频在哪一天里面有讲解,我没找到相应的视频

6 个回复

倒序浏览
hashCode 是Object类中定义的方法,public int hashCode(),返回该对象的哈希码值。在子类没有覆写Object类方法的时候,打印出来的是 其在内存中的地址值. 视频 你找找 关于Object 的那段吧  String类什么的,介绍 API 的内容

比如在 collection 里面,定义一个 HashSet 集合,存在里面的 自定义对象 (new Person(String name,int age)),如果你直接打印对象,返回的是这个对象在内存中的地址.

当你覆写其hashCode方法,就可以比较 是不是存在重复的对象,并可以进行对重复对象的删除或者其他操作啦...

hashCode() 非常重要 ,所以一起好好学习下吧

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
张孝祥老师的 基础加强26讲——hashset与hashcode 有简短的提到
回复 使用道具 举报
hashcode这个方法是用来鉴定2个对象是否相等的。
那你会说,不是还有equals这个方法吗?

不错,这2个方法都是用来判断2个对象是否相等的。但是他们是有区别的。

一般来讲,equals这个方法是给用户调用的,如果你想判断2个对象是否相等,你可以重写equals方法,然后在代码中调用,就可以判断他们是否相等了。简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。

hashcode方法一般用户不会去调用,比如在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。这里不可以重复是说equals和hashcode只要有一个不等就可以了!所以简单来讲,hashcode相当于是一个对象的编码,就好像文件中的md5,他和equals不同就在于他返回的是int型的,比较起来不直观。我们一般在覆盖equals的同时也要覆盖hashcode,让他们的逻辑一致。举个例子,还是刚刚的例子,如果姓名和性别相等就算2个对象相等的话,那么hashcode的方法也要返回姓名的hashcode值加上性别的hashcode值,这样从逻辑上,他们就一致了。

要从物理上判断2个对象是否相等,用==就可以了。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
我这个帖子提到了~~~把我的那个小例子跑一跑~~~

http://bbs.itheima.com/forum.php ... 29&page=1#pid277402
回复 使用道具 举报
在毕向东讲解hashset那部分
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马