精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-02
废话不说,代码先行!
package com.bobo; import java.util.Set; public class TestA { 首先,java的泪默认集成Object得到 public boolean equals(Object obj) { public native int hashCode(); 都是通过对象地址产生hashcode和比较的! 这样产生hashcode自然不同就放进去[不用考虑equals哦,呵呵后面在继续]
8,9行一个对象2个引用放进去就是1个,为什么? 上面类似 s指向的对象相同就是s的内容一样[一个地址数据],这样生成的hashcode一样,放不进!
5,11行 false为什么? 因为到集合找东西首先把找的对象生成hashcode看看集合有没有这个hashcode对应的,假设2,3分别的hashcode是2,3现在找的这个生成的hashcode是4,自然没有,返回false 12行,返回true 英文是一个s指向自然hashcode一样,在看equals返回是true
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-09
rrsy23 写道 废话不说,代码先行!
package com.bobo; import java.util.Set; public class TestA { 首先,java的泪默认集成Object得到 public boolean equals(Object obj) { public native int hashCode(); 都是通过对象地址产生hashcode和比较的! 这样产生hashcode自然不同就放进去[不用考虑equals哦,呵呵后面在继续]
8,9行一个对象2个引用放进去就是1个,为什么? 上面类似 s指向的对象相同就是s的内容一样[一个地址数据],这样生成的hashcode一样,放不进!
5,11行 false为什么? 因为到集合找东西首先把找的对象生成hashcode看看集合有没有这个hashcode对应的,假设2,3分别的hashcode是2,3现在找的这个生成的hashcode是4,自然没有,返回false 12行,返回true 英文是一个s指向自然hashcode一样,在看equals返回是true
好文。 override equals的时候要注意一个陷阱 请看这里, http://www.artima.com/lejava/articles/equality.html |
|
返回顶楼 | |
浏览 2375 次