我在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
如何解决这个问题以及为什么会发生这种情况。
谢谢
答案 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));
}