Java 检查hashmap是否有项?
下面代码中的(!adjacentNodes.get(nodeId.isEmpty())语句有什么问题 这一陈述引出了以下信息: java.lang.NullPointerExceptionJava 检查hashmap是否有项?,java,hashmap,hashset,Java,Hashmap,Hashset,下面代码中的(!adjacentNodes.get(nodeId.isEmpty())语句有什么问题 这一陈述引出了以下信息: java.lang.NullPointerException package IN.company; 导入java.util.HashMap; 导入java.util.HashSet; 公共类扩散模型{ public int-ICModel(int[]种子集,HashMap-adjacentNodes,双p){ HashSet infected=新HashSet();
package IN.company;
导入java.util.HashMap;
导入java.util.HashSet;
公共类扩散模型{
public int-ICModel(int[]种子集,HashMap-adjacentNodes,双p){
HashSet infected=新HashSet();
HashSet recentlyInfected=新HashSet();
...
而(最近感染的.size()>0){
HashSet-nextActivator=新HashSet();
如果(!recentlyInfected.isEmpty()){
for(整数nodeId:recentlyInfected){
if(!adjacentNodes.get(nodeId.isEmpty()){
HashSet nextersofnode=adjacentNodes.get(nodeId);
for(整数nodeNeighbor:nextersofnode){
if((Math.random()这是因为adjacentNodes为null,这将导致NPE。在该行之前,请尝试打印adjacentNodes的值。希望这有帮助。尝试此if(adjacentNodes.get(nodeId)!=null&&!adjacentNodes.get(nodeId).isEmpty(){
如果有人帮助我并解释本声明的问题,我将不胜感激:
if (!adjacentNodes.get(nodeId).isEmpty())
此语句导致“java.lang.NullPointerException”
根据您发布的代码,adjacentNodes
为null,或者它不包含当前由nodeId
引用的键
您必须检查该行前面的adjacentNodes
是否为null
如果adjacentNodes
不是null您应该使用Java8的Map
类()的getOrDefault()
方法
如果指定的表达式生成一个NullPointerException
,那么肯定是因为adjacentNodes.get(nodeId)
返回null
。请特别注意,null
与对空映射的非null引用是完全不同的。谢谢,但我如何修复它?我用isEmpty函数检查这个问题,它错了吗?@Timothy Truckle,谢谢,但这个主题对我没有用处。谢谢,我知道它,但如何解决我能修复它吗?!adjacentNodes.isEmpty()或!=null
if (!adjacentNodes.get(nodeId).isEmpty())
if(!adjacentNodes.getOrDefault(nodeId, Collections.emptySet()).isEmpty())){ //...