我是Java的新手,并试图了解集合。当我试图将一个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);
}
}
}
}
异常:线程“main”中的异常 java.lang.IndexOutOfBounds异常:Source 不适合 java.util.Collections.copy(未知来源) at ArrayListTest.main(ArrayListTest.java:19)
如果我做错了什么,请告诉我。
复制方法需要目标的大小等于或大于要复制的列表。默认情况下,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);
}
}
此行将arrayList复制到您的目标列表中:
ArrayList<Integer> destinationList = new ArrayList<>(arrayList);
问题内容: 我的尺寸为10。我将其分配l1给新列表引用类型。威尔和指向同一个对象吗?还是分配给对象的副本l2? 使用引用时,如果我更新列表对象,它也会反映l1引用类型中的更改。 例如: 除了创建2个列表对象并在集合上进行从旧到新的复制之外,没有其他方法可以将列表对象的副本分配给新的引用变量吗? 问题答案: 是的,分配将刚刚复制值的(这是引用)。它们都将引用相同的对象。 但是,创建浅表副本非常简单:
本文向大家介绍如何复制或克隆Java ArrayList?,包括了如何复制或克隆Java ArrayList?的使用技巧和注意事项,需要的朋友参考一下 java.util.ArrayList类的 clone()方法返回此ArrayList实例的浅表副本(即,不复制元素本身)。使用此方法,可以将一个数组列表的内容复制到另一个数组列表。 示例 输出结果
你怎么捕获一个异常,之后在另外一个线程上重新抛出?使用在标准文档18.8.5中描述的异常传递中的方法吧,那将显示标准库的魔力。 exception_ptr current_exception(); 返回一个exception_ptr 变量,它将指向现在正在处理的异常(15.3)或者现在正在处理的异常的副本(拷贝),或者有的时候在当前没有遇到异常的时候,返回值为一个空的exception_ptr变量
我了解到,当您在Java中修改变量时,它不会改变它所基于的变量 我对对象也假设了类似的情况。考虑一下这个类。 在我试过这个代码后,我搞糊涂了。
你可以将复制图表和列表导出为一份 PDF 文件。若要导出复制,请单击 。 复制图表 复制列表
问题内容: 我需要制作一个副本,`HashMap<Integer, List List List `原件中。 如果我正确理解,这两种方法只会创建浅拷贝,这不是我想要的: 我对吗? 除了遍历所有键和所有列表项并手动复制之外,还有更好的方法吗? 问题答案: 没错,浅表副本不能满足您的要求。它将具有原始地图中的副本,但这些副本将引用相同的对象,因此对from 的修改将出现在from的对应内容中。 在Ja