我有一个ArrayList,它的索引似乎有问题,但它不应该。 下面是守则:
public class Main{
public static void main(String[] args){
ArrayList<String> list = new ArrayList<String>();
String str = "example";
int one = 1;
list.ensureCapacity(one);
list.add(one - 1, str);
System.out.printn(list.get(one - 1));
}
}
错误消息:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheckForAdd(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at Main.main(Main.java:9) //list.add(one - 1, str);
提前谢谢!
答案 0 :(得分:2)
你向我们展示的代码运行良好。
假设您收到错误
list.add(one, str); // instead of: list.add(one - 1, str);
这是解释。
ArrayList#add(int, E)
javadoc州
将指定元素插入此列表中的指定位置。
您当前ArrayList
中没有位置1。它是空的,即使它可能有更多元素的容量。
答案 1 :(得分:2)
代码是完美的唯一问题,存在于行
中的当前代码中 System.out.printn(list.get(one - 1));
--------------------^
使用println
或print
答案 2 :(得分:0)
只有当我改变int one = 2;
时我才能重现你所得到的错误。使用int one = 1;
打印出example
。