Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的ArrayList类存在问题_Java_Algorithm_Arraylist - Fatal编程技术网

Java中的ArrayList类存在问题

Java中的ArrayList类存在问题,java,algorithm,arraylist,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) 我不明白为什么。

我对以下代码有问题。我得到了错误信息

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

    }

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

要么:

list.add(0, s1);
list.add(1, s2);
或者最好:

list.add(s1);
list.add(s2);
set尝试替换当前存在的项,但尚未替换任何项

您从未使用过

it.next();

也许这不是重点,但我不认为你想要一个无限循环。

你到底为什么要写这个来将一个列表复制到另一个列表

这要简洁得多:

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);
   }
}
import java.util.ArrayList;
导入java.util.List;
公共类列表演示
{
公共静态void main(字符串[]args)
{
列表l1=新的ArrayList(参数长度);
for(字符串arg:args)
{
l1.添加(arg);
}
System.out.println(“l1:+l1”);
列表l2=新阵列列表(l1);
System.out.println(“l2:+l2”);
}
}

当您有堆栈跟踪时,使用它来找出崩溃发生的位置!这里的put()是一个在javadoc中重新验证的死赠品。

更好的是:Collections.copy(l2,l1)<代码>列表l1=Arrays.asList(args);列表l2=新阵列列表(l1)