IndexOutOfBounds添加到 ArrayList at index 时的异常更新

我得到以下代码的异常。但不明白为什么。Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0

public class App {
    public static void main(String[] args) {
        ArrayList<String> s = new ArrayList<>();

        //Set index deliberately as 1 (not zero)
        s.add(1,"Elephant");

        System.out.println(s.size());                
    }
}

更新

我可以让它工作,但我试图理解这些概念,所以我将声明更改为下面,但也没有工作。

ArrayList<String> s = new ArrayList<>(10)

答案 1

数组列表索引从 0(零)开始

数组列表大小为 0,并且正在第 1 个索引处添加 String 元素。如果不在第 0 个索引处添加元素,则无法添加下一个索引位置。这是错误的。

因此,只需将其设置为

 s.add("Elephant");

或者你可以

s.add(0,"Elephant");

答案 2

必须从 0、1 等开始,按顺序向 ArrayList 添加元素。

如果您需要将元素添加到特定位置,可以执行以下操作 -

String[] strings = new String[5];
strings[1] = "Elephant";

List<String> s = Arrays.asList(strings);
System.out.println(s); 

这将产生溶出输出

[null, Elephant, null, null, null]

推荐