簡體   English   中英

Java HashMap和對象鍵

[英]Java HashMap and Object keys

LinkedHashMap<Long, String> myHashMap = new LinkedHashMap<>();
myHashMap.put(new Long(1), "A Value");

問題

  1. 密鑰是參考還是副本?
  2. 如果我寫String aValue = myHashMap.get(new Long(1)); ,我會收回"A Value"嗎? 還是我剛剛查詢了另一個對象(引用),因此會出現錯誤?
  1. 該映射存儲對作為參數傳遞的對象的引用的副本。 沒有對象的副本。
  2. 是的,如記錄所示,您將獲得“價值”。 Map將其鍵與equals()而不是==進行比較(IdentityHashMap除外)。 順便說一句,您可以輕松測試一下。
  1. 密鑰是對同一實例的引用。
  2. 您將獲得"A Value" ,因為Long已被覆蓋

    • equals()return value == obj.longValue() ),
    • hashCode()return Long.hashCode(value) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM