一、如果想将一个数组拷贝给另一个数组,可以用Arrays的copyOf()方法完成。可以将一个数组的一部分或整体拷贝给另一个数组。
1、public static int[] copyOf(int[] original, int newLength)
original:源数组
newLength:新数组长度
当newLength大于源数组的长度时,会将源数组全部拷贝到新数组中,剩余的空间将会用零填充。
当newLength小于源数组的长度时,会将源数组前一部分拷贝给新数组。
import java.util.Arrays;
public class solution{
public static void main(String [] args){
int i;
int [] t= {1,5,6,9,3,2,7,8,4};
int [] r=Arrays.copyOf(t, 15);
int [] l=Arrays.copyOf(t, 4);
for(i=0;i<r.length;i++) {
System.out.print(r[i]+" ");
}
System.out.println();
for(i=0;i<l.length;i++)
System.out.print(l[i]+" ");
}
}
结果:
1 5 6 9 3 2 7 8 4 0 0 0 0 0 0
1 5 6 9
2、public static int[] copyOfRange(int[] original, int from, int to)
从源数组中拷贝指定区间的内容到新数组中。
import java.util.Arrays;
public class solution{
public static void main(String [] args){
int i;
int [] t= {1,5,6,9,3,2,7,8,4};
int [] r=Arrays.copyOfRange(t, 2,15);//多出的位置用零填充
int [] l=Arrays.copyOfRange(t, 4,8);
for(i=0;i<r.length;i++) {
System.out.print(r[i]+" ");
}
System.out.println();
for(i=0;i<l.length;i++)
System.out.print(l[i]+" ");
}
}
结果:
6 9 3 2 7 8 4 0 0 0 0 0 0
3 2 7 8
二、如果是ArrayList或Vector中将一个对象中的内容拷贝到另一个ArrayList或Vector对象中可以用subList()方法,ArrayList和Vector这两个比较相似,但是Vector线程安全,ArrayList非线程安全。
public List subList(int fromIndex, int toIndex)
fromIndex:起始下标;
toIndex:终止下标。
import java.util.Vector;
import java.util.ArrayList;
public class solution{
public static void main(String [] args){
ArrayList<Integer> list;
Vector<Integer> a=new Vector<Integer>();
a.add(10);
a.add(11);
a.add(12);
a.add(13);
a.add(14);
a.add(15);
a.add(16);
list=new ArrayList<Integer>(a);
Vector<Integer> b=new Vector<Integer>(a.subList(1, 3));
ArrayList<Integer> c=new ArrayList<Integer>(list.subList(2, 7));
System.out.println(b);
System.out.println(c);
}
}
结果:
[11, 12]
[12, 13, 14, 15, 16]