谁能解释一下这个问题...
为什么:
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
最佳答案
因为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));
关于java - 为什么此代码会产生 IndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393117/