gpt4 book ai didi

java - ArrayList 意外越界结果

转载 作者:行者123 更新时间:2023-11-29 06:42:35 26 4
gpt4 key购买 nike

大家好,我发现了异常:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 0

代码如下:

 **ArrayList decoded = new ArrayList(10);
decoded.add(1, "A");**

我真的不明白这是怎么回事?

也许有人可以帮我解决这个问题。


基本上我想这样做:例如,我有这样的字符:

ABCEDFG

和数字数组:

321211

我需要获取第一个字符和第一个数字。 char 写入 S arrayList:

S={"A"};

查看数字并再次在该位置写入相同的字符,如果数字为 3,则排在第三位:(如果数字为 1 则将其写入 arrayList)

S={"A","","","A"}

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

BCEDFG

21211

一直重复到最后。

最佳答案

我怀疑您对容量大小 感到困惑。这一行:

ArrayList decoded = new ArrayList(10);

... 创建一个容量为 10 的列表(在添加第十一个元素之前它不需要在内部增长),但是 大小 为 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

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

String[] decoded = new String[10];
decoded[1] = "S";

关于java - ArrayList 意外越界结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810067/

26 4 0