2013-11-01 59 views
-2

我正在嘗試將多個HashMap對象添加到列表中。首先添加OK。但在下一輪它崩潰與異常錯誤「5」。我爲每一輪都創建了一個新的hshmap對象,但它仍然崩潰。Java無法創建HashMap列表

HashMap<String, Object> data; 
ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>(); 

for(int i=0;i<iCount;i++) 
    { 
     arrRow = resSearchItems.get(i).split("\\^"); 

     { 
      data = new HashMap<String, Object>();   

      data.put("ResNumber", arrRow[0]); 
      data.put("MeetingType#", arrRow[1]); 
      data.put("Topic", arrRow[2]); 
      data.put("MeetingDate", arrRow[3]); 
      data.put("Motion", arrRow[4]); 
      data.put("Votes", arrRow[5]); 

      dataList.add(data); 

     }      
    } 

謝謝

+9

請向我們展示實際的例外情況,而不是解釋它 –

+0

此外,此代碼不編譯,這使得它很難幫助你。 –

+2

我現在完全猜測,在你的第二個解析中,沒有'arrRow [5]'給他'位置5處的OutOfBoundsException'。採取所有賭注。 :) –

回答

0

您應該檢查arrRow.length -1是你要訪問的數組最大索引。如果這個值小於5那麼你會得到ArrayIndexOutOfBoundsException

0

兩個想法:

  1. 從何iCount而來?
  2. 嘗試更換方法調用與檢索數據:

    arrRow = "one^two^three^four^five^six".split("\\\\^");

,看看你的代碼仍然崩潰。這編譯和運行罰款對我來說:

import java.util.HashMap; 
import java.util.ArrayList; 

public class HashmapTest { 
    public static void main(String args[]) { 
    HashMap<String, Object> data; 
    ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>(); 
    String[] arrRow; 
    int iCount = 4; 

    for(int i=0;i<iCount;i++) { 
     arrRow = "one^two^three^four^five^six".split("\\^"); 
     data = new HashMap<String, Object>();   

     data.put("ResNumber", arrRow[0]); 
     data.put("MeetingType#", arrRow[1]); 
     data.put("Topic", arrRow[2]); 
     data.put("MeetingDate", arrRow[3]); 
     data.put("Motion", arrRow[4]); 
     data.put("Votes", arrRow[5]); 

     dataList.add(data); 

    }      
    System.out.println("hashmap count:" + dataList.size()); 
    } 
} 

這是某種刮取的數據?如果每個resSearchItems字符串不包含6個項目,你可能想嘗試喜歡的東西:

HashMap<String, Object> data; 
ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>(); 
String[] hashKeys = {"ResNumber","MeetingType#","Topic","MeetingDate","Motion","Votes"}; 

for(int i=0;i<iCount;i++) { 
    arrRow = resSearchItems.get(i).split("\\^"); 
    data = new HashMap<String, Object>();   

    for(int j=0;j<arrRow.length && j<hashKeys.length;j++) 
     data.put(hashKeys[j], arrRow[j]); 

    dataList.add(data); 
}   
0

resSearchItems.get(i)其中i = 1,可能會返回null,我們無法猜測。另外,如果arrRow不包含6個或更多元素,則將拋出java.lang.ArrayIndexOutOfBoundsException