gpt4 book ai didi

java - Hashmap get 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:45 26 4
gpt4 key购买 nike

我有两个 HashMap

HashMap<Integer, Integer> inventoryRequirements = new HashMap<Integer, Integer>();
HashMap<Integer, Integer> inventory = new HashMap<Integer, Integer>();

我有一个检查当前并添加到它的循环:

for(Item item : items){
int currentRequirement = 0;
currentRequirement = inventoryRequirements.get(item.get_id());
inventoryRequirements.put(item.get_id(), currentRequirement++);
}

我有另一个检查库存并添加到库存的循环:

for(Item item : items){
int currentInventory = 0;
// this next line returns null
currentInventory = inventory.get(item.get_id());
inventory.put(item.get_id(), currentInventory++);
}

第一个工作正常,但第二个会呕吐并返回空值。我不明白为什么第二个不起作用。两者最初都处于代码示例中描述的相同状态。

编辑

如您在此处看到的那样,两个 HM 得到了填充 - 真的!我知道这可能很难相信,但第一个有效而第二个无效。

最佳答案

如果您通过 get() 请求的 key 不在 Map 中,您显示的两个循环都将抛出 NullPointerException (NPE) >.

Map.get() 在键不存在时返回 null(当然,如果与该键一起存储的值为 null ). NullInteger(自动装箱类型)无法自动拆箱为 int,因此它会抛出 NPE。

执行此操作的安全方法是:

for (Item item : items) {
Integer currentRequirement = inventoryRequirements.get(item.get_id());
if (currentRequirement != null) {
inventoryRequirements.put(item.get_id(), currentRequirement++);
}
}

当然,您的集合中的 Item 也完全有可能是 nullthat 就是抛出 NPE 的原因.

关于java - Hashmap get 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com