Java не может создать список HashMap

Я пытаюсь добавить несколько объектов hashmap в список. Первый добавлен ОК. Но в следующем раунде происходит сбой с ошибкой исключения "5". Я создаю новый объект hshmap для каждого раунда, но он все еще падает.

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);

        }                       
    }

Спасибо

3 ответа

resSearchItems.get(i) где i = 1может вернуться nullМы не можем угадать. Кроме того, если arrRow не содержит 6 или более элементов, то java.lang.ArrayIndexOutOfBoundsException будет брошен.

Вы должны проверить arrRow.length -1 чтобы быть максимальным индексом вы хотите получить доступ к массиву. Если это значение меньше 5 тогда вы получите ArrayIndexOutOfBoundsException,

Две мысли:

  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);
 }         
Другие вопросы по тегам