黑马程序员技术交流社区
标题:
集合类遇到难题
[打印本页]
作者:
12300123
时间:
2015-4-11 21:46
标题:
集合类遇到难题
看毕向东老师讲的集合类,搞不明白HsahSet集合为何要复写Object类的toString()方法和HashCode()及equals方法呢,看得好迷糊,今天一天都在看这个内容了。什么时候需要复写Object类的toString()方法呢?谁给个详细的解答啊,求。
作者:
奔放的龙小胖
时间:
2015-4-11 21:54
毕姥爷是不是每次都要在后面添加一个这个方法
public static void sop(Object obj){
System.out.println(obj);
}
复制代码
?
那是因为方便打印时候输出字符串形式的数据吧!
(个人肤浅见解....)
作者:
natsu647
时间:
2015-4-11 23:23
因为HsahSet主要就是用HashCode()及equals()进行判断是否相同,具体工作时根据添加的对象,重写HashCode()及equals()方便判断。
作者:
撑起一个家
时间:
2015-4-12 00:29
HashSet底层数据结构是哈希表。
它依赖两个方法:hashCode()和equals()
顺序:
首先,判断hashCode()值是否相同。
相同:
继续走equals()方法,根据其返回值:
true:说明元素重复,不添加到集合。
false:说明元素不重复,添加到集合。
不同:直接添加到集合。
作者:
撑起一个家
时间:
2015-4-12 00:30
确保HashSet元素的唯一性
作者:
12300123
时间:
2015-4-12 08:46
撑起一个家 发表于 2015-4-12 00:29
HashSet底层数据结构是哈希表。
它依赖两个方法:hashCode()和equals()
顺序:
恩,就是刚看的迷迷糊糊。
作者:
突然世界晴
时间:
2015-4-12 09:18
toString 方法复写是根据你需求来的,如果你想通过toString方法获取集合里面的内容就要复写,
不复写就是调用Objec里面的toString方法返回的应该是地址值
作者:
杨大萌
时间:
2015-4-12 09:23
Object类是所有类的父类,HashSet集合用到父类的toString方法时,就要复写父类的方法,以完成自己想要的功能。equals方法也是一样的,在Object类定义时,并不知道将来哪一个子类会用到这方法,所以它定义equals的时候,很简单,就是比较两个对象的内存地址,可是现实开发中,我们常常要比较两个对象的时候,不是要比较内存地址,而是要比较对象内容是否相同,所以所有继承Object类,想要使用equals来完成比较的时候,都要复写Object类的equals方法,以达成比较两个对象是否相同的功能。你只要把复写的那块整明白了,后面的就好理解了。
作者:
lhtwm1
时间:
2015-4-12 23:01
toString() 是个打印的转换的方法 hashcode 的equals 是做比较的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2