簡體   English   中英

帶有整數鍵和值的HashMap:值的變化不會被反映出來

[英]HashMap with Integer keys and values : Change in values do not get reflected

我正在嘗試示例代碼,有些得到的結果我不明白:

 Map<Integer,Integer> map = new HashMap<>();
 map.put(1, 2);
 System.out.println(map.get(1));
 Integer k = map.get(1);
 k++;
 System.out.println(map.get(1));

結果:

2
2

但是,由於Integer是一個對象,變化也應該反映在地圖值中? 那么為什么價值不會改變呢?

Integer是不可變的,並且k++不會更改存儲在Map中的Integer的值。 它創建一個新的Integer實例。

您應該將新值放在Map中以便修改Map

     Map<Integer,Integer> map = new HashMap<>();
     map.put(1, 2);
     System.out.println(map.get(1));
     Integer k = map.get(1);
     k++;
     map.put(1, k);
     System.out.println(map.get(1));

如果Integer是一個可變類,並且你會調用一個改變其狀態的方法,那么你就不需要再將這個值放在Map

你的錯誤概念:整數是不可改變的!

這意味着k ++創建了一個新的Integer對象。 無法更改現有Integer對象的值!

暫無
暫無

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

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