0

所以我必须在 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 把网站弄乱了。:)

4

3 回答 3

2

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

  1. 哈希为空
  2. strArr 为空
  3. n >= strArr size

    调试你的代码,看看什么是空的并且应该被初始化。
于 2013-03-15T06:23:17.840 回答
1

第 1 点:您尚未初始化哈希图。

如果你还没有初始化你的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));
 }
于 2013-03-15T06:37:16.510 回答
0

您是否初始化了ArrayListClass 的对象或 Class的对象HashMap

 HashMap<Integer,ArrayList<Integer>> hash = new HashMap<Integer,ArrayList<Integer>>();
 ArrayList<Integer> array= new ArrayList<Integer>();
 array.add(30);
 hash.put(1, array);
于 2013-03-15T06:37:04.883 回答