我在過去的一個小時內讀過很多帖子,但我仍然不清楚使用不可變對象作爲Hashmap中的鍵的概念。我有一個hashmap,它的關鍵字是一個String。散列表中的值是MyStore,其中MyStore表示關於我擁有的商店的信息。該字符串表示地址。在我的代碼中,我擁有的邏輯是,我首先在地圖上查找該鍵(如果存在) - >獲取其值(如果其不存在將其放入散列表中)。我的經理告訴我,未來鑰匙將會改變,那就是我的商店地址將在未來發生變化。他說在那種情況下,我首先檢查密鑰是否存在的邏輯將不起作用。我不明白他在這裏的意思。我想非常清楚地理解以下幾點 -字符串作爲hashmap中的鍵
- hashmap的可變鍵和不可變鍵的區別。
- 如果使用可更改的不可變密鑰,會發生什麼情況? - 我知道這沒有意義,但我想清楚地理解我的經理在這裏談論的是什麼。
- 有些文章談論字符串如果用作hashmap中的鍵緩存他們的哈希碼 - 這是什麼意思?
- 如果可以說我使用可變對象作爲實現hashcode和equals的hashmap中的鍵,那麼它會工作嗎?我假設它會因爲如果密鑰更改,包含方法將看看如果密鑰存在。如果它不存在,它會把的條目,所以你可以得到它在未來。
我不是說要創建一個重複的帖子,如果這已被討論過。如果我錯過閱讀回答所有問題的帖子,請將它指向我。如果沒有,請用外行解釋我上面提到的問題,這對其他讀者來說是有用的:)。如果任何人有類似的問題,請隨時編輯我的文章的主題,他們直接在這裏登陸:)
這應該回答你的問題 http://stackoverflow.com/questions/214714/mutable-vs-immutable-objects – Spencer
不斷變化的哈希碼打破的HashMap的合同。在這種情況下,您可能需要[按對象引用映射](http://docs.oracle.com/javase/1.5.0/docs/api/java/util/IdentityHashMap.html)。或者將地圖轉換爲對象屬性關係。 –