Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java调整嵌套Hashmap值_Java_Hashmap - Fatal编程技术网

Java调整嵌套Hashmap值

Java调整嵌套Hashmap值,java,hashmap,Java,Hashmap,我试图使用这里给出的想法来调整嵌套hashmap,但我的解决方案不起作用:。我的嵌套hashmap是购物列表。它包含一个购物列表listID作为键的外部hashmap和一个项目作为值的hashmap。items hashmap包含itemName作为键,项的数量作为值。adjustItemAmount尝试将项目的金额调整为给定的x HashMap<String, HashMap<String, Integer>> shoppingLists = new HashMap&l

我试图使用这里给出的想法来调整嵌套hashmap,但我的解决方案不起作用:。我的嵌套hashmap是
购物列表
。它包含一个购物列表
listID
作为键的外部hashmap和一个项目作为值的hashmap。items hashmap包含
itemName
作为键,项的数量作为值。
adjustItemAmount
尝试将项目的金额调整为给定的
x

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 shoppingLists=newhashmap();
public void adjustItemAmount(字符串itemName、int x、字符串listID){
int current_amount=shoppingLists.get(listID).get(itemName);
HashMap items=shoppingLists.get(listID);
HashMap updateItems=items.put(itemName,items.get(itemName)+x);
shoppingLists.put(listID,updateItems);
}
HashMap updateItems=items.put(itemName,items.get(itemName)+x)
声明Java需要一个hashmap,但得到一个整数。我看不出情况如何。

你在写什么

HashMap updatedItems= items.put(itemName,items.get(itemName)+x);
但是,put方法返回键的上一个值(已更新),如果没有值,则返回null,而不是HashMap。看

换行

Integer addedValue = items.put(itemName,items.get(itemName)+x);
或者只是

items.put(itemName,items.get(itemName)+x);

请参阅文档以了解
put
-

返回:与键关联的上一个值,如果存在,则返回null 没有键的映射。(null返回也可以表示映射 如果实现支持,则以前将null与键关联 空值。)

那么这个

HashMap updateItems=items.put(itemName,items.get(itemName)+x)

编译将失败,并且无法返回
哈希映射
,但它返回的是
整数

相反,它应该是-


Integer updateItems=items.put(itemName,items.get(itemName)+x)

HashMap的put方法不返回HashMap。它返回值。因此,这一行是不正确的:

    HashMap updatedItems= items.put(itemName,items.get(itemName)+x);

返回类型将是Integer,因为items map是
类型。

放入HashMap将返回值对象,在本例中为Integer。您正在尝试将此整数分配给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);
            items.put(itemName,items.get(itemName)+x);
            shoppingLists.put(listID,items);    
        }
public void adjustItemAmount(String itemName、int x、String listID){
int current_amount=shoppingLists.get(listID).get(itemName);
HashMap items=shoppingLists.get(listID);
items.put(itemName,items.get(itemName)+x);
shoppingLists.put(listID,items);
}

那么,这段代码有什么问题吗?编辑问题以指出问题所在。您所说的“声明Java需要一个哈希映射,但得到一个整数”是什么意思?如果遇到异常,请发布完整的详细信息:异常类型、消息和堆栈跟踪。另外,请创建一个。目前,如果不对您的数据进行假设,我们无法执行您的代码。