我有这个数组:

ArrayList<Problem> problems = new ArrayList <Problem>( 100 );


然后我尝试制作一个对象放入其中:

Problem p = new Problem ();
p.setProblemName( "Some text" );


然后,我尝试将对象添加到数组中:

problems.set(1, p);


但是此时系统会抛出运行时异常:

03-12 18:58:04.573: E/AndroidRuntime(813): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0


但是,如果我将数组的初始大小增加到100,为什么会发生此错误?看来这是超级直截了当的。

谢谢!

最佳答案

您不使用set添加到ArrayList中,而是使用它覆盖现有元素。

problems.set(1, p); //Overwrite the element at position 1


您使用add

problems.add(p);


将在最后添加

problems.add(1, p);


将其添加到索引1,这将为索引 ArrayList.size()抛出IndexOutOfBoundsException。首次尝试添加时就是这种情况。

也只是为了你的知识

problems.add(ArrayList.size(), p); //Works the same as problems.add(p);

09-26 19:21