《Beginning Java 7》 - 5 - Hash Codes 哈希码

哈希码和 equals() 都是用来比较的。

 

1. 哈希码的作用是用来提高比较的效率。因为当比较的对象比较复杂时,equals() 可能很耗时,但哈希码只需要比较一个 int 。哈希码常用于集 (set) 中的检索。

 

2. 规则:当我们 override 了 equals() 和 hashcode() 中的其中一个时,另一个也要重写。

因为 Java 的正确规则是,如果 equals() 为真,hashcode() 必须相同,但反之可以不成立。需要尽量遵循此此规则。

 

3. 一种合理的 hashcode() 的重写方式:

public int hashcode() {
    int hash = 1;
    hash = hash * 31 + aNonNullFieild.hashCode();
    hash = hash * 31 + (anotherField == null ? 0 : anotherField.hashCode());
    return hash;
}
posted @ 2013-12-24 08:49  davesuen  阅读(159)  评论(0)    收藏  举报