在Java中复制Arraylist时发生异常

在Java中复制Arraylist时发生异常,java,arraylist,Java,Arraylist,我是Java新手,正在努力学习集合。当我尝试将一个ArrayList复制到另一个ArrayList时,会遇到异常。请在下面找到相同的代码 import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class ArrayListTest { public static void main(String[] args) { try(Scanner

我是Java新手,正在努力学习集合。当我尝试将一个ArrayList复制到另一个ArrayList时,会遇到异常。请在下面找到相同的代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class ArrayListTest {

    public static void main(String[] args) {

        try(Scanner scanner = new Scanner(System.in) ){
            System.out.println("Enter the number of elements to enter into an array");
            int userCount = scanner.nextInt();
            System.out.println("Enter the number one by one");
            ArrayList<Integer> arrayList = new ArrayList<>();
            ArrayList<Integer> destinationList = new ArrayList<>(arrayList);
            for(int i=0; i<userCount; i++){
                arrayList.add(scanner.nextInt());
            }

            Collections.copy(destinationList, arrayList);           
            //Print elements in the Array List
            for(Integer number: destinationList){
                System.out.println("The numbers are");
                System.out.println(number);
            }

        }

        }
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.Scanner;
公共类ArrayListTest{
公共静态void main(字符串[]args){
try(扫描器=新扫描器(System.in)){
System.out.println(“输入要输入数组的元素数”);
int userCount=scanner.nextInt();
System.out.println(“逐个输入数字”);
ArrayList ArrayList=新的ArrayList();
ArrayList destinationList=新建ArrayList(ArrayList);

对于(int i=0;i复制方法需要目标的大小与要复制的列表的大小相同或更大。默认情况下,arrayList的大小随着添加更多元素而增加。您需要检查arrayList的大小,然后创建具有相同或更大大小的目标列表以避免此异常。

如果要修复代码,请重试这:

try (Scanner scanner = new Scanner(System.in)) {
        System.out.println("Enter the number of elements to enter into an array");
        int userCount = scanner.nextInt();
        System.out.println("Enter the number one by one");
        ArrayList<Integer> arrayList = new ArrayList<>();
        for (int i = 0; i < userCount; i++) {
            arrayList.add(scanner.nextInt());
        }

        ArrayList<Integer> destinationList = new ArrayList<>(arrayList);
        // Print elements in the Array List
        for (Integer number : destinationList) {
            System.out.println("The numbers are");
            System.out.println(number);
        }

}
try(扫描器=新扫描器(System.in)){
System.out.println(“输入要输入数组的元素数”);
int userCount=scanner.nextInt();
System.out.println(“逐个输入数字”);
ArrayList ArrayList=新的ArrayList();
for(int i=0;i
此行将arrayList复制到目标列表中:

ArrayList<Integer> destinationList = new ArrayList<>(arrayList);
ArrayList destinationList=新的ArrayList(ArrayList);

什么是异常?线程“main”java.lang.IndexOutOfBoundsException中的异常:Source不适合java.util.Collections.copy(未知源代码)在ArrayListTest.main(ArrayListTest.java:19)中的dest。这已在stackoverflow上发布。请参阅。谢谢。不要使用
Collections.copy()
为此,只需使用接受另一个列表的列表构造函数即可。