2017-02-14 11 views
0

У меня есть ArrayList внутри ArrayList (вложенной ArrayList), как показано нижекак получить экземпляр ArrayList, который находится внутри другого ArrayList

ArrayList<ArrayList<Integer>> indexOfJSONObject = new ArrayList<ArrayList<Integer>>(); 

Теперь мне нужно, чтобы получить экземпляр arraylist, который существует в заданный индекс массива indexOfJSONObject и добавьте к нему значение. Я использовал следующий код

ArrayList<Integer> tempJSONObjectAL= (ArrayList<Integer>)indexOfJSONObject.get(givenIndex); 

    tempJSONObjectAL.add(value); 

, но это дает мне ошибку

Исключение в потоке "основной" java.lang.IndexOutOfBoundsException: Индекс: 0 Размер: 0

как это исправить и почему это происходит.

Спасибо

+0

Это не очень трудно unserstand ошибку: Вы хотите элемент с индексом 0, поэтому первый НО список пуст: размер = 0 Вы, очевидно, не предоставить любые данные indexOfJSONObject – azro

+0

, это происходит потому, что 'indexOfJSONObject' не содержит никаких элементов и для каждой спецификации doc, вызывающей' get' на пустые результаты списка в 'IndexOutOfBoundsException' – marknorkin

+0

indexOfJSONObject имеет значение null в то время, когда вы его вызываете – Akshay

ответ

1

Проблема здесь, кажется, что размер списка 0, и вы все еще пытаются получить доступ к элементу в положении 0.

Вы никогда не должны пытаться получить прямой доступ к элементу в коллекции, без используя цикл/итератор или не помещая проверку сравнения размера и givenIndex. Ваш код должен быть что-то вроде

ArrayList<Integer> tempJSONObjectAL= null; 
if(indexOfJSONObject.size() > givenIndex) 
    tempJSONObjectAL = (ArrayList<Integer>)indexOfJSONObject.get(givenIndex); 
0

Попробуйте следующий код:

ArrayList<ArrayList<Integer>> indexOfJSONObject = new ArrayList<ArrayList<Integer>>(); 
     ArrayList<Integer> tempJSONObjectAL=new ArrayList<Integer>(); 

     for(ArrayList<Integer> list:indexOfJSONObject) 
     { 
      tempJSONObjectAL.add(list.get(index)); 

     } 
1

Причина Это очень просто. Эта ошибка связана с тем, что indexOfJSONObject - это ArrayList, который сам содержит ArrayList. Но у вас нет ArrayList внутри indexOfJSONObject.
Вы изначально получаете ArrayList из indexOfJSONObject, в то время как внутри него нет ArrayList.
Вам нужно добавить новый экземпляр объекта ArrayList в indexOfJSONObject, а затем с ним работать.

Добавив одно конкретное заявление, вы решите проблему. Просто проверьте мой код ниже:

ArrayList<ArrayList<Integer>> indexOfJSONObject = new ArrayList<ArrayList<Integer>>(); 

//This line of code is required in your case 
indexOfJSONObject.add(new ArrayList<Integer>()); 

ArrayList<Integer> tempJSONObjectAL= (ArrayList<Integer>)indexOfJSONObject.get(givenIndex); 

tempJSONObjectAL.add(value); 
Смежные вопросы