Java中的ArrayList类问题

时间:2009-09-27 16:20:01

标签: java algorithm arraylist

我遇到以下代码问题。我收到错误消息

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++;
        }

    }

4 个答案:

答案 0 :(得分:11)

您使用错误的方法添加项目。

或者:

list.add(0, s1);
list.add(1, s2);

或者最好:

list.add(s1);
list.add(s2);

设置尝试替换当前存在的项目,但还没有任何内容。

More info

答案 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中重新调用的死亡赠品。