gpt4 book ai didi

java - 难以跟踪 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 14:15:25 26 4
gpt4 key购买 nike

这是生成 NPE 的代码段,如果它还不足以让您了解可能出现的问题,请告诉我。

我有一个这样实例化的 map :

Map<Integer, Set<Long>> myMap = new HashMap<Integer, Set<Long>>();

我正在尝试执行以下操作:

long randomLong = methodReturnsRandomLong();
int randomInt = methodReturnsRandomInt();

if(myMap.isEmpty()) { // the map is empty at this point
myMap.put(randomInt, new HashSet<Long>());
myMap.get(randomInt).add(randomLong);
}

// Now I want to remove it
myMap.get(randomInt).remove(randomLong); // Here is what generates the NPE

我不明白是什么原因导致 NPE。我的猜测是使用 new HashSet<Long>()在我的myMap.put()内方法导致了它。但我并不完全确定。

最佳答案

发生这种情况是因为 map 可能不为空,但没有randomInt 值的条目。

您正在寻找的是:

//does a mapping exist for this specific value?
if(!myMap.containsKey(randomInt)){
myMap.put(randomInt, new Hashset<Long>());
myMap.get(randomInt).add(randomLong);
}
//now this value will be defined here.
myMap.get(randomInt).remove(randomLong);

调用map.isEmpty只是检查映射存在。您确实想知道 randomInt 值是否存在映射,而不是是否存在映射。

我知道你说 map 此时是空的,但我之前已经见过几次这个错误。这通常是类似情况的原因。

关于java - 难以跟踪 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18148106/

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