使用循环将arrayList添加到arraylist

时间:2014-11-21 11:37:22

标签: java arraylist

每当我尝试运行我的代码时,我都会得到一个超出界限的错误数组。

    trans = new ArrayList<List<Transition>>(5);
    ArrayList<Transition> t = new ArrayList<Transition>(5);
    for (j = 0; j <5; j++)
        trans.get(j).addAll(t); // <- Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

3 个答案:

答案 0 :(得分:4)

当您创建列表列表时,您有一个大小为0的空列表,然后您说get(i)将尝试将大小与i进行比较,并且jdk期望大小大于索引i。

所以你可能会做类似的事情:

trans = new ArrayList<List<Transition>>(5);
for (j = 0; j <5; j++) {
   trans.add(new ArrayList<Transition>()); 
}
ArrayList<Transition> t = new ArrayList<Transition>(5);
for (j = 0; j <5; j++)
    trans.get(j).addAll(t); // <- out of bounds

答案 1 :(得分:1)

您的trans列表为空。你没有add任何东西。当你运行trans.get(j)时,它无法获得任何结果。

答案 2 :(得分:0)

请参阅docs

  

构造具有指定初始容量的列表。

你没有add任何事情,你不能get

 trans.get(j).addAll(t);
       ↑ 

尝试检查大小,您将获得0.因此,任何访问trans的尝试都会抛出异常。