Java 使用HashMap的put方法时出现NullPointerException
下面的代码给了我一个Java 使用HashMap的put方法时出现NullPointerException,java,hashmap,nullpointerexception,Java,Hashmap,Nullpointerexception,下面的代码给了我一个NullPointerException。问题出现在以下行中: ... dataMap.put(nextLine[0], nextLine[6]); 奇怪的是,我在没有上述代码行的情况下运行了这段代码,并且对nextLine[0]和nextLine[6]的调用完全按照预期工作-也就是说,它们会返回csv文件的元素。我声明并用代码初始化HashMap HashMap<String, String> dataMap = null; HashMap-dataMap
NullPointerException
。问题出现在以下行中:
...
dataMap.put(nextLine[0], nextLine[6]);
奇怪的是,我在没有上述代码行的情况下运行了这段代码,并且对nextLine[0]
和nextLine[6]
的调用完全按照预期工作-也就是说,它们会返回csv文件的元素。我声明并用代码初始化HashMap
HashMap<String, String> dataMap = null;
HashMap-dataMap=null;
早期的方法
String[] nextLine;
int counter=0;
while (counter<40) {
counter++;
System.out.println(counter);
nextLine = reader.readNext();
// nextLine[] is an array of values from the line
System.out.println(nextLine[0] + " - " + nextLine[6] +" - " + "etc...");
dataMap.put(nextLine[0], nextLine[6]);
}
return dataMap;
}
String[]下一行;
int计数器=0;
while(counter数据映射在哪里初始化?它总是空的
为了澄清这一点,您需要声明变量并将其设置为null。但是您需要实例化一个新映射,无论它是HashMap还是类似的映射
e、 g
(撇开泛型等不谈)dataMap已声明但未初始化。可以使用
datamap=new HashMap();好的,在那一行上访问了三个对象。如果nextLine[0]和nextLine[6]不为null,因为上面的println调用有效,那么就剩下datamap。您是否执行了datamap=new HashMap();somwehere?HashMap datamap=new HashMap();
HashMap<String, String> dataMap = new HashMap<String,String>();
此时未初始化您的dataMap
变量。您应该会收到一条编译器警告。嗯,当您执行此操作时,您希望做什么
HashMap<String, String> dataMap = null;
...
dataMap.put(...)
HashMap-dataMap=null;
...
dataMap.put(…)
我的情况与往常不同,hashmaps在尝试读取不存在的键时抛出空指针异常,例如我有一个
HashMap-map=newhashmap();
它是空的,或者除了“someKey”之外还有其他键,所以当我尝试
map.get(“someKey”)==0;
现在,由于将null与某个整数匹配,这将生成一个NullPointerExection
我该怎么做呢
Ans:我应该检查空值,比如
map.get(“someKey”)!=null;
现在运行时错误Nullpointer不会出现!是的,非常奇怪的是,取消引用显式为null的指针会引发NullPointerException。我原以为null是一种占位符,但使用put时,值为“put”让HashMap不再等于nullIf put=null我的程序会自己写吗?…为什么这里有一个负号?我开始怀疑Stackoverflow社区的客观性。问题真的不是它被显式初始化了吗?为null?我认为Codingscape的意思是说“没有实例化”实际上,这里有一个提示。他没有得到警告,因为他将其初始化为null以覆盖他肯定得到的编译器警告。你应该养成一个习惯,默认情况下不要将变量初始化为“中立”值,只将它们设置为实值,这样编译器就可以发出警告。我只是想知道“24”这类琐碎的新手编码问题的要点
HashMap<String, String> dataMap = null;
...
dataMap.put(...)