添加到HashMap会产生NullPointerException

时间:2013-03-15 06:15:02

标签: java hashmap

所以我必须在Java中使用HashMap,我需要从随机选取的ArrayList中填充一些值。

我正在填充ArrayList并且我的代码取一个随机数,n小于ArrayList的大小,我使用该随机值访问我的ArrayList中的一个点并将其存储到HashMap中。所以这是我的代码,如上所述添加到HashMap,

hash.put(index, strArr.get(n));

其中hash是HashMap的名称,index只是一个int值,strArr是我从中获取项目的字符串的ArrayList,而n是一个随机数。

这给了我一个NullPointerException,我和我的三个CS朋友都不知道为什么。请帮助,非常感谢正确方向的任何一步。

所以这只是因为我没有初始化我的HashMap。很抱歉,我刚刚开始在本周早些时候开始学习HashMaps。 :)

3 个答案:

答案 0 :(得分:2)

NullPointerException意味着您正在尝试对非初始化对象进行操作。 这些是可能性:

  1. 哈希为空
  2. strArr为null
  3. n> = strArr大小

    调试你的代码,看看什么是null,应该已经初始化。

答案 1 :(得分:0)

您是否已确定ArrayList Class HashMap Class的对象?

 HashMap<Integer,ArrayList<Integer>> hash = new HashMap<Integer,ArrayList<Integer>>();
 ArrayList<Integer> array= new ArrayList<Integer>();
 array.add(30);
 hash.put(1, array);

答案 2 :(得分:0)

  

第1点:您尚未初始化hashmap。

如果你没有初始化你的hashmap并且试图将元素放在hashmap中,你肯定会得到NPE。

  

第2点:你的strArr为空

同样的,如果你的strArrnull并且你正试图访问第N 位置的元素,那么肯定会得到NPE。

下面的代码可能对您有帮助。

Map<Integer,String> hashMap = new HashMap<Integer, String>();

List<String> strList = new ArrayList<String>();

strList.add("Apple");
strList.add("Mango");

for(int i=0;i<strList.size();i++)
 {
   hashMap.put(i, strList.get(i));
 }