Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 使用System.arraycopy复制到ArrayList时获取异常,获取:ArrayStoreException:null_Java_Arrays_Arraylist - Fatal编程技术网

Java 使用System.arraycopy复制到ArrayList时获取异常,获取:ArrayStoreException:null

Java 使用System.arraycopy复制到ArrayList时获取异常,获取:ArrayStoreException:null,java,arrays,arraylist,Java,Arrays,Arraylist,我在尝试复制两个数组时遇到一些问题。 考虑下面的简单代码: ArrayList<Integer> t1 = new ArrayList<Integer>(); Integer i1 = new Integer(1); Integer i2 = new Integer(2); t1.add(i1); t1.add(i2); ArrayList<Integer> t2 = new ArrayList<Inte

我在尝试复制两个数组时遇到一些问题。 考虑下面的简单代码:

    ArrayList<Integer> t1 = new ArrayList<Integer>();
    Integer i1 = new Integer(1);
    Integer i2 = new Integer(2);
    t1.add(i1);
    t1.add(i2);

    ArrayList<Integer> t2 = new ArrayList<Integer>();
    System.arraycopy(t1, 0, t2, 0, t1.size());
ArrayList t1=新的ArrayList();
整数i1=新整数(1);
整数i2=新整数(2);
t1.添加(i1);
t1.添加(i2);
ArrayList t2=新的ArrayList();
数组复制(t1,0,t2,0,t1.size());
控制台显示: java.lang.ArrayStoreException:null。 这段代码中可能有什么错误,或者如何以不同的方式执行。
抱歉,这可能是一个简单的问题,但我在这个问题上纠缠了几个小时,无法解决它。

System.arraycopy希望数组(例如Integer[])作为数组参数,而不是ArrayList

如果您希望复制这样的列表,只需执行以下操作:

List<Integer> t2 = new ArrayList<Integer>(t1);
List t2=新的数组列表(t1);
您需要
收藏#复制

Collections.copy(t1,t2);
它会将t1列表中的所有元素复制到t2中。

更简单:

ArrayList<Integer> t2 = new ArrayList<Integer>(t1);

如果有人只想添加第二个ArrayList的一部分,可以这样做:

ArrayList<Integer> t1 = new ArrayList<Integer>();
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
Integer i3 = new Integer(3);
t1.add(i1);
t1.add(i2);
t1.add(i3);

ArrayList<Integer> t2 = new ArrayList<Integer>();

/*
 * will add only last two integers
 * as it creates a sub list from index 1 (incl.)
 * to index 3 (excl.)
 */
t2.addAll(t1.subList(1, 3));

System.out.println(t2.size()); // prints 2
System.out.println(t2.get(0)); // prints 2
System.out.println(t2.get(1)); // prints 3
ArrayList t1=新的ArrayList();
整数i1=新整数(1);
整数i2=新整数(2);
整数i3=新整数(3);
t1.添加(i1);
t1.添加(i2);
t1.添加(i3);
ArrayList t2=新的ArrayList();
/*
*只将最后两个整数相加
*当它从索引1(包括)创建子列表时
*至索引3(不包括)
*/
t2.addAll(t1.子列表(1,3));
System.out.println(t2.size());//印刷品2
System.out.println(t2.get(0));//印刷品2
System.out.println(t2.get(1));//印刷品3
ArrayList<Integer> t1 = new ArrayList<Integer>();
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
Integer i3 = new Integer(3);
t1.add(i1);
t1.add(i2);
t1.add(i3);

ArrayList<Integer> t2 = new ArrayList<Integer>();

/*
 * will add only last two integers
 * as it creates a sub list from index 1 (incl.)
 * to index 3 (excl.)
 */
t2.addAll(t1.subList(1, 3));

System.out.println(t2.size()); // prints 2
System.out.println(t2.get(0)); // prints 2
System.out.println(t2.get(1)); // prints 3