Java 检查hashmap是否有项?

Java 检查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();

下面代码中的(!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();
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())){ //...