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
,
Две мысли:
- Где же
iCount
родом из? Попробуйте заменить вызов метода для получения данных:
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);
}