数组的拷贝,删除和扩容都可以使用System类中的一个arraycopy方法来实现。
/**
* src: 源数据--数组
* srcPos: 指定从src数组的第几个元素开始赋值
* dest:被赋值的数组
* destPos:指从dest数组的那个位置开始赋值
* length:指定将src数组的多少个元素赋给dest数组的元素
*/
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,int length);
拷贝实例:
public static void main(String[] args) {
String[] s = {"阿里","百度","京东","搜狐","网易"};
String[] sBak = new String[6];
System.arraycopy(s,1,sBak,2,s.length-1);
for (String s1 : sBak) {
System.out.println(s1);
}
}
// null null 百度 京东 搜狐 网易
删除:
本质上也是拷贝。
//删除数组中指定索引位置的元素,并将原数组返回
public static String[] removeElment(String[] s, int index){
System.arraycopy(s, index+1, s, index, s.length-index-1);
s[s.length-1] = null;//删除最后一位重复的元素
return s;
}
public static void main(String[] args) {
String[] s = {"阿里","百度","京东","搜狐","网易"};
String[] strings = removeElment(s, 0);
for (String s1 : strings) {
System.out.println(s1);
}
}
// 百度 京东 搜狐 网易 null
扩容:
本质上是:先定义一个更大的数组,然后将原数组内容原封不动拷贝到新数组中
public static String[] extendRange(String[] s1){
String[] s2 = new String[s1.length+5];
//就将s1中所有的元素拷贝到了s2
System.arraycopy(s1,0, s2,0, s1.length);
return s2;
}
public static void main(String[] args) {
String[] s = {"阿里","百度","京东","搜狐","网易"};
String[] strings = extendRange(s);
for (String s1 : strings) {
System.out.println(s1);
}
}
// 阿里 百度 京东 搜狐 网易 null null null null null
关注公众号,获取各种免费软件、资料,笔记哦。