equals() 與 hashcode()

2018-07-03 14:48 更新

Equal

如果需要比較對象的值,就需要equal方法了. 看一下JDK中equal方法的實(shí)現(xiàn):

public boolean equals(Object obj) {
    return (this == obj);
}

也就是說,默認(rèn)情況下比較的還是對象的地址. 所以如果把對象放入Set中等操作,就需要重寫eqaul方法了

重寫之后的 equals() 比較的就是對象的內(nèi)容了

hashcode

When inserting an object into a hastable you use a key. The hash code of this key is calculated, and used to determine where to store the object internally. When you need to lookup an object in a hashtable you also use a key. The hash code of this key is calculated and used to determine where to search for the object.

The hash code only points to a certain "area" (or list, bucket etc) internally. Since different key objects could potentially have the same hash code, the hash code itself is no guarantee that the right key is found. The hashtable then iterates this area (all keys with the same hash code) and uses the key's equals() method to find the right key. Once the right key is found, the object stored for that key is returned.

So, as you can see, a combination of the hashCode() and equals() methods are used when storing and when looking up objects in a hashtable.

If equal, then same hash codes too. Same hash codes no guarantee of being equal.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號