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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 12300123 中级黑马   /  2015-4-11 21:46  /  1302 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看毕向东老师讲的集合类,搞不明白HsahSet集合为何要复写Object类的toString()方法和HashCode()及equals方法呢,看得好迷糊,今天一天都在看这个内容了。什么时候需要复写Object类的toString()方法呢?谁给个详细的解答啊,求。

8 个回复

倒序浏览
毕姥爷是不是每次都要在后面添加一个这个方法

  1. public  static void sop(Object obj){
  2.     System.out.println(obj);
  3. }
复制代码
?
那是因为方便打印时候输出字符串形式的数据吧!
(个人肤浅见解....)
回复 使用道具 举报
因为HsahSet主要就是用HashCode()及equals()进行判断是否相同,具体工作时根据添加的对象,重写HashCode()及equals()方便判断。
回复 使用道具 举报
HashSet底层数据结构是哈希表。
                它依赖两个方法:hashCode()和equals()
                顺序:
                        首先,判断hashCode()值是否相同。
                                相同:
                                        继续走equals()方法,根据其返回值:
                                                true:说明元素重复,不添加到集合。
                                                false:说明元素不重复,添加到集合。
                                不同:直接添加到集合。
回复 使用道具 举报
确保HashSet元素的唯一性
回复 使用道具 举报
撑起一个家 发表于 2015-4-12 00:29
HashSet底层数据结构是哈希表。
                它依赖两个方法:hashCode()和equals()
                顺序:

恩,就是刚看的迷迷糊糊。
回复 使用道具 举报
toString 方法复写是根据你需求来的,如果你想通过toString方法获取集合里面的内容就要复写,
不复写就是调用Objec里面的toString方法返回的应该是地址值
回复 使用道具 举报
Object类是所有类的父类,HashSet集合用到父类的toString方法时,就要复写父类的方法,以完成自己想要的功能。equals方法也是一样的,在Object类定义时,并不知道将来哪一个子类会用到这方法,所以它定义equals的时候,很简单,就是比较两个对象的内存地址,可是现实开发中,我们常常要比较两个对象的时候,不是要比较内存地址,而是要比较对象内容是否相同,所以所有继承Object类,想要使用equals来完成比较的时候,都要复写Object类的equals方法,以达成比较两个对象是否相同的功能。你只要把复写的那块整明白了,后面的就好理解了。
回复 使用道具 举报
lhtwm1 中级黑马 2015-4-12 23:01:21
9#
toString()  是个打印的转换的方法  hashcode 的equals  是做比较的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马