有人可以解释这个问题......
为什么:
String letters[] = { "A", "B", "C" };
ArrayList<String> list = new ArrayList<String>(3);
for(int i=2 ; i >= 0 ; i--)
list.set(i,letters[i]);
for(int i=0 ; i < list.size() ; i++)
System.out.print(list.get(i));
制作:
IndexOutOfBoundsException
答案 0 :(得分:5)
由于new ArrayList<String>(3)
创建的ArrayList
初始容量为3,因此不是包含3个元素的列表:
ArrayList<String> list = new ArrayList<String>(3);
list.size();//output 0
因此,当您第一次调用list.set(i,letters[i])
时,您正在尝试访问不存在的元素2。
另一方面,此代码将按照您的预期方式运行:
ArrayList<String> list = new ArrayList<String>(Collections.nCopies(3, null));