ArrayList意外超出边界结果

Str*_*boy 1 java arraylist

嗨,大家好我抓住了异常

java.lang.IndexOutOfBoundsException:索引:1,大小:0

代码看起来像这样:

 **ArrayList decoded = new ArrayList(10);
        decoded.add(1, "A");**
Run Code Online (Sandbox Code Playgroud)

我真的不明白这里有什么不对吗?

也许有人可以帮我这个.


基本上我想这样做:我有chars例如喜欢这样:

ABCEDFG
Run Code Online (Sandbox Code Playgroud)

和数字的数组:

321211
Run Code Online (Sandbox Code Playgroud)

我需要先取一个char和第一个数字.char写入S arrayList:

S={"A"};
Run Code Online (Sandbox Code Playgroud)

查看数字并再次在该位置写入相同的字符,如果数字是3然后在第三位:(如果是数字1那么只需在arrayList中写入)

S={"A","","","A"}
Run Code Online (Sandbox Code Playgroud)

并从arrayLists中删除number和char.现在他们看起来像这样:

BCEDFG

21211
Run Code Online (Sandbox Code Playgroud)

再一次直到最后.

Jon*_*eet 5

我怀疑你在容量大小之间感到困惑.这一行:

ArrayList decoded = new ArrayList(10);
Run Code Online (Sandbox Code Playgroud)

...创建一个容量为10 的列表(在添加第11个元素之前不需要内部增长),但是大小为0. 唯一可以添加任何内容的索引是0.

如果您希望能够在任意位置设置值,则应首先填充列表,例如(使用泛型只是因为我讨厌使用原始类型):

List<String> decoded = new ArrayList<String>(10);
for (int i = 0; i < 10; i++) {
    decoded.add(""); // Or perhaps null
}

...
decoded.set(1, "S"): // This is now fine, replacing element 1
Run Code Online (Sandbox Code Playgroud)

或者,如果您已经知道所需的大小,则可以使用数组开始 - 它们具有固定大小,并且每个元素都是元素类型的默认值(null例如,对于字符串):

String[] decoded = new String[10];
decoded[1] = "S";
Run Code Online (Sandbox Code Playgroud)