【发布时间】:2017-07-02 12:42:52
【问题描述】:
我在数组列表(嵌套数组列表)中有一个数组列表,如下所示
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 ,所以第一个但列表为空:size = 0 您显然没有向 indexOfJSONObject 提供任何数据
-
发生这种情况是因为
indexOfJSONObject不包含任何项目,并且每个文档规范在空列表上调用get会导致IndexOutOfBoundsException -
indexOfJSONObject 在您调用它时为空
-
我猜你在arrayList的第一个位置基本上没有任何东西:-)这基本上就是你得到错误IOOBE的原因。由于将空数组列表添加到数组列表没有任何意义 - 因为第一个元素将是一个空对象 :-) 但是,如果您先 new ArrayList ,然后再添加一个新的 ArrayList ,事情将作为打算:-)。
-
也许使用
Map<Integer, List<Integer>>会更方便和可读
标签: java arraylist indexoutofboundsexception