【面試題】HashMap中如何將對象作爲key

我們都知道HashMap中包含若干個鍵值對<key, value>,而key可以使用很多類型,如Integer,String等等。那麼,我們可以將自定義的對象作爲這個key嗎?

答案是可以的,但是必須要重寫hashcode()和equals()這兩個方法。

如果不重寫這兩個方法會怎麼樣呢?假設我們創建了這個對象的兩個實例,分別爲obj1和obj2。obj1和obj2是完全一樣的,因爲他們的所有的屬性都是相同的。

但是在使用HashMap的put()方法時,obj1和obj2還是會被放入不同的桶中。因爲Object類中存在hashcode()和equals()兩個方法,hashcode默認情況下和內存中的地址相關。因此obj1和obj2在調用hashcode()方法的時候會生成不同的哈希值。同時equals也要進行重寫,來定義兩個對象在什麼情況下視作相等。

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