2013-03-15 84 views
0

所以我必須在Java中使用HashMap,並且需要從隨機挑選的ArrayList中填充一些值。添加到HashMap中會產生NullPointerException

我正在填充ArrayList,並且我有一個隨機數,小於ArrayList的大小的代碼,我使用該隨機值訪問我的ArrayList中的某個點並將其存儲到HashMap。因此,這裏是我的代碼如上所述添加到HashMap中,

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

其中哈希值是HashMap的名稱,指數只是一個int值,strArr是我要考慮的項目字符串的ArrayList來自,而n是一個隨機數。

這是給我一個NullPointerException,我和我的三個CS朋友都不知道爲什麼。請大家幫忙,任何一步都朝着正確的方向非常感謝。

所以這只是因爲我沒有初始化我的HashMap。對不起,我剛剛在本週早些時候開始學習HashMaps。 :)

+1

W/O看到了代碼,我最好的猜測是,你有沒有**初始化你的HashMap ** :) – PermGenError 2013-03-15 06:18:24

+0

或strArr可以爲空。 – 2013-03-15 06:22:14

+1

你可以在這裏添加一些代碼嗎? – AmitG 2013-03-15 06:26:21

回答

2

NullPointerException意味着您正試圖對未初始化的對象進行操作。 這些都是可能性:

  1. 哈希爲空
  2. strArr是空
  3. N> = strArr大小

    調試你的代碼,看到的是空,應該已經被初始化。
+0

是的,我忘了初始化它謝謝:) – user2009481 2013-03-15 06:30:42

+4

(3)將導致IndexOutOfBoundsException(不是NullPointerException) - [引用](http://docs.oracle.com)。COM/JavaSE的/ 6 /文檔/ API/JAVA/UTIL/ArrayList.html#GET(INT))。 – Dukeling 2013-03-15 06:31:45

+0

哎呀,你是對的... – 2013-03-16 12:28:02

0

您初始化了對象ArrayList類或對象HashMap類?

HashMap<Integer,ArrayList<Integer>> hash = new HashMap<Integer,ArrayList<Integer>>(); 
ArrayList<Integer> array= new ArrayList<Integer>(); 
array.add(30); 
hash.put(1, array); 
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)); 
} 
相關問題