關於hashcode()方法和equals()方法的一些理解

Object 類提供了兩個方法 hashcode() 與equals(),用於比較兩個對象是否相同。

首先,hashcode碼必須在實現了hash table 的容器中才有作用(比如 hashset,hashmap),這裏拿hashset舉例。

	當向集合hashSet中增加對象時,首先集合計算要增加對象的hashCode碼,根據該值來得到一個位置用來存放當前對象,擋在該位置沒有一個對象存在的話,那麼集合hashSet認爲該對象在集合中不存在,直接增加進去。如果在該位置有一個對象存在的話,接着將準備增加到集合中的對象與該位置上的對象進行equals方法比較,如果該equals方法返回false,那麼集合認爲集合中不存在該對象,在進行一次散列,將該對象放到散列後計算出的新地址裏,如果equals方法返回true,那麼集合認爲集合中已經存在該對象了,不會再將該對象增加到集合中了。
	有一個概念必須記住,在沒有重寫equals方法時,equals相等的那兩個對象一定擁有相同的HASHCODE碼,但是反過來並不一定成立。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章