数组的拷贝
System.arraycopy(src, srcPos, dest, destPos, length);
public class Arraycopy {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] s1= {"a1","a2","a3","a4","a5","a6"};
String[] s2=new String[10];
System.arraycopy(s1, 2,s2, 0, 4);
//System.arraycopy(src, srcPos, dest, destPos, length);
for(int i=0;i<s2.length;i++) {
System.out.println(s2[i]);
}
}
删除数组中的某个元素。
实际上也即是数组的拷贝,在需要删除元素的位置分开,将后面的元素重新赋值放在以删除元素为首位置的地方。得到的即是删除元素之后的元素。最后一个元素的位置可能还是原数组的值,所以需要重新将其置位null。
public class Arraycopy {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] s1= {"a1","a2","a3","a4","a5","a6"};
//删除某个元素也就是数组的拷贝,删除a3
System.arraycopy(s1, 3,s1, 2, 3);
s1[s1.length-1]=null;
for(int i=0;i<s1.length;i++) {
System.out.println(s1[i]);
}
}
}
数组的扩容
本质上就是,先定义一个更大的数组,将原数组的内容原封不动的拷贝到新数组中
public class Arraycopy {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] s1= {"a1","a2","a3"};
Addelement(s1);
}
public static String[] Addelement(String[] s1) {
//String[] s1= {"a1","a2","a3"};
String[] s2=new String[s1.length+10];
System.arraycopy(s1, 0, s2, 0, s1.length);
for(String temp:s2) {
System.out.println(temp);
}
return s2;
}
}
在数组中增加一个元素
public class Arraycopy {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] s1= {"a1","a2","a3"};
String[] s2= {"a4","a5"};
AddElement(s1,s2,2);
}
//将s2插入到s1中的第index个元素之后。
public static String[] AddElement(String[] s1,String[] s2,int index) {
//String[] s1= {"a1","a2","a3"};
String[] s3=new String[s1.length+s2.length];
System.arraycopy(s1, 0, s3, 0, index);
System.arraycopy(s2, 0, s3, index, s2.length);
System.arraycopy(s1, index, s3, index+s2.length, s1.length-index);
//System.arraycopy(src, srcPos, dest, destPos, length);
for(String temp:s3) {
System.out.println(temp);
}
return s3;
}
}