2017-02-14 2 views
0

J'ai un arraylist l'intérieur d'un arraylist (arraylist imbriquée) comme ci-dessouscomment obtenir une instance d'un arraylist qui se trouve dans un autre arraylist

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

Maintenant, je dois obtenir une instance de la arraylist qui existe dans un donné l'index de l'arraylist indexOfJSONObject et lui ajoute une valeur. J'ai utilisé le code suivant

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

    tempJSONObjectAL.add(value); 

mais il me donne l'erreur de

Exception dans le thread "principal" java.lang.IndexOutOfBoundsException: Index: 0, Taille: 0

comment résoudre ce problème et pourquoi cela arrive.

Merci

+0

Il est pas très difficile de unserstand l'erreur: Vous voulez que l'élément à l'index 0, donc la première mais la liste est vide: size = 0 Vous avez apparemment pas fournir des données à indexOfJSONObject – azro

+0

cela arrive parce que 'indexOfJSONObject' ne contient aucun élément et par doc spec appelant' get' sur la liste vide résultats dans 'IndexOutOfBoundsException' – marknorkin

+0

indexOfJSONObject est nul au moment où vous l'appelez – Akshay

Répondre

1

Le problème semble ici que la taille de la liste est 0 et que vous essayez d'accéder encore un élément à la position 0.

Vous ne devriez jamais tenter d'accéder directement à un élément dans une collection, sans en utilisant une boucle/itérateur ou sans mettre une vérification en comparant la taille et givenIndex. Votre code devrait être quelque chose comme

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

Essayez le code suivant:

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

Raison Ceci est très simple. Cette erreur est due au fait que indexOfJSONObject est une ArrayList qui elle-même contient une ArrayList. Mais vous n'avez aucune ArrayList dans l'indexOfJSONObject.
Vous obtenez initialement l'ArrayList à partir de indexOfJSONObject, alors qu'il n'y a pas d'Instanciation ArrayList à l'intérieur.
Vous devez ajouter une nouvelle instanciation de ArrayList à indexOfJSONObject, puis travailler avec.

En ajoutant une instruction spécifique permettra de résoudre le problème. Il suffit de vérifier le code ci-dessous:

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