我遇到以下代码问题。我收到错误消息
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:571)
at java.util.ArrayList.set(ArrayList.java:364)
at Test.main(Test.java:17)
我不明白为什么。我有一个列表,初始化,然后我迭代它,然后我想用第一个列表的值填充另一个列表。我不明白为什么我得到IndexOutOfBoundsException。我的初始化似乎不正确。非常感谢提前。
public static void main(String[] args) {
String s1 = "one";
String s2 = "one";
ArrayList list = new ArrayList();
list.set(0, s1);
list.set(1, s2);
Iterator it = list.iterator();
ArrayList listToFill = new ArrayList();
int k = 0;
while (it.hasNext()) {
String m = "m";
listToFill.set(k, m);
k++;
}
}
答案 0 :(得分:11)
您使用错误的方法添加项目。
或者:
list.add(0, s1);
list.add(1, s2);
或者最好:
list.add(s1);
list.add(s2);
设置尝试替换当前存在的项目,但还没有任何内容。
答案 1 :(得分:3)
你永远不会使用
it.next();
也许这不是重点,但我认为你不想要无限循环。
答案 2 :(得分:0)
为什么要写这个来将一个List复制到另一个?
这更为简洁:
import java.util.ArrayList;
import java.util.List;
public class ListDemo
{
public static void main(String[] args)
{
List<String> l1 = new ArrayList<String>(args.length);
for (String arg : args)
{
l1.add(arg);
}
System.out.println("l1: " + l1);
List<String> l2 = new ArrayList<String>(l1);
System.out.println("l2: " + l2);
}
}
答案 3 :(得分:0)
当你有一个堆栈跟踪时,使用它来找出发生崩溃的位置!在这里put()是一个在javadoc中重新调用的死亡赠品。