![](/img/trans.png)
[英]Comparing integer values of 2 or more keys of one hashmap to 2 values in another 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.