如何获得另一个arraylist中的arraylist实例

时间:2017-02-14 09:39:10

标签: java arraylist indexoutofboundsexception

我在arraylist(嵌套arraylist)中有一个arraylist,如下所示

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

现在我需要获取arraylist arraylist的给定索引中存在的indexOfJSONObject的实例,并为其添加一个值。我使用了以下代码

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

    tempJSONObjectAL.add(value); 

但它给了我

的错误
  

线程“main”中的异常java.lang.IndexOutOfBoundsException:索引:0,大小:0

如何解决这个问题以及为什么会发生这种情况。

谢谢

3 个答案:

答案 0 :(得分:2)

此处的问题似乎是列表大小为0,您仍在尝试访问位置0的元素。

你不应该尝试直接访问集合中的元素,不使用循环/迭代器或不进行比较size和givenIndex的检查。你的代码应该是

Add Feature

答案 1 :(得分:2)

原因这很简单。此错误是因为indexOfJSONObject是一个ArrayList,它本身拥有一个ArrayList。但是你没有indexOfJSONObject中的任何ArrayList 您最初从indexOfJSONObject获取ArrayList,而其中没有ArrayList Instantiation。
您需要向indexOfJSONObject添加一个新的ArrayList实例,然后使用它。

通过添加一个特定的声明将解决问题。只需查看下面的代码:

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

答案 2 :(得分:1)

请尝试以下代码:

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

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

        }