我有这个数组:
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);