Java adjusting nested Hashmap value
我试图使用这里给出的想法来调整嵌套的hashmap,但我的解决方案不起作用:如果在java hashmap中给出一个键,如何更新值? 我的嵌套hashmap是
1 2 3 4 5 6 7 8 | HashMap<String, HashMap<String, Integer>> shoppingLists = new HashMap<>(); public void adjustItemAmount(String itemName, int x, String listID) { int current_amount = shoppingLists.get(listID).get(itemName); HashMap<String, Integer> items = shoppingLists.get(listID); HashMap updatedItems = items.put(itemName, items.get(itemName) + x); shoppingLists.put(listID, updatedItems); } |
第
HashMap的put方法不返回HashMap。它返回值。因此这条线不正确:
1 |
返回类型为Integer,因为items map是
请参阅
Returns : the previous value associated with key, or null if there was
no mapping for key. (A null return can also indicate that the map
previously associated null with key, if the implementation supports
null values.)
https://docs.oracle.com/javase/7/docs/api/java/util/Map.html#put(K,%20V)
所以这
将无法编译并且无法返回
相反,它应该是 -
你写
1 |
但是,put方法返回已更新的键的先前值,如果没有值,则返回null,而不是HashMap。请参阅https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html#put-K-V-
将行更改为
1 |
要不就
1 | items.put(itemName,items.get(itemName)+x); |
放入HashMap返回Value对象,在本例中为Integer。您正在尝试将此Integer分配给HashMap。删除作业,您的代码将起作用。更换
1 2 3 4 5 6 |