java - 为什么此代码会产生 IndexOutOfBoundsException?

标签 java string for-loop arraylist indexoutofboundsexception

谁能解释一下这个问题...

为什么:

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/

相关文章:

python - 如何在另一条指令后在 python 中编写内联 for 循环?

javascript - 在 ES6 javascript 中检测 FOR OF 循环中的最后一次迭代

java - GridBagLayout anchor

java - 编程新手。构建简单的银行应用程序 - token ";"上存在语法错误,{预期。 - Eclipse 中的错误(包含代码)

regex - Bash 正则表达式在句子中查找特定单词

javascript - 如何在 JavaScript 中将字符串转换为符号

java - Wicket:延迟加载 DropDownChoice

java - 如何在android中将list.java添加到main.java中

c - 将字符串转换为代码?

for-loop - 三个相互依赖的嵌套for循环的渐近分析