锁定老帖子 主题:这个题真实变态 怎么改呐!!!
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-10
ddy
忘记写这个方法了。 equals() |
|
返回顶楼 | |
发表时间:2007-05-10
...equals和hashcode对于想放入Collection等东东的对象要配套写...
|
|
返回顶楼 | |
发表时间:2007-05-10
这个是想考HASHCODE()和EQUALS(),不过题出的有点问题。在JDK1.5下是出不来结果的。
if (e.hash == hash && eq(k, e.key)) return e.value; |
|
返回顶楼 | |
发表时间:2007-05-10
在 Effective Java 里面提过这种应该被禁止的做法。正常情况下,是不应该 override hashCode 和 equals 的
|
|
返回顶楼 | |
发表时间:2007-05-10
jdk1.5是实现不了,因为:
1、在hashmap中是的get方法中是这样写的: if (e.hash == hash && ((k = e.key) == key || key.equals(k))) return e.value; e.hash = hash 可以通过重载student的hashCode()方法满足。 但是第二个条件,好像不能满足。 这里key是一个String “lily”,但是k是一个V型的数据。在String的equals方法中这样写的: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; } 因为k既不是String对象,和”lily”又不是同一个引用,所以无法满足。 |
|
返回顶楼 | |
发表时间:2007-05-10
重写jvm中的string
equles(){ return true; } 为什么不能满足? |
|
返回顶楼 | |