void arraycopy(Object src, int srcPos, Object dst, int dstPos, int length)
是一个数组,方法的作用是:将一个数组中的元素,从指定位开始,拷贝到另外一个数组中的指定位置,拷贝length个
-src: 原数组
-srcPos: 原数组中,需要拷贝的元素起始下标
-dst: 目标数组
-dstPos: 目标数组中,需要粘贴的元素的起始下标
-length: 拷贝的元素的数量
T[] copyOf(T[] src, int newLenth);
-src:源数组
-newLenth:新长度
public class Test {
public static void main(String[] args) {
MutableArray mutableArray=new MutableArray();
mutableArray.add("lily");
mutableArray.add("lucy");
mutableArray.add("poly");
System.out.println(mutableArray);
System.out.println("===================");
mutableArray.set(1,"tom");
System.out.println(mutableArray);
System.out.println("===================");
mutableArray.remove("tom");
System.out.println(mutableArray);
System.out.println("===================");
mutableArray.remove(1);
System.out.println(mutableArray);
System.out.println("===================");
}
}
class MutableArray {
private String [] arr;
public MutableArray() {
this.arr=new String[0];
}
public void add(String s){
//String []str=new String[arr.length+1];
//每次只扩一位,可以尝试将这个位数扩大
String []str=Arrays.copyOf(this.arr,arr.length+1);
str[str.length-1]=s;
this.arr=str;
}
public void set(int index,String s){
arr[index]=s;
}
public void remove(String s){
int index;
for(int i=0;i<arr.length;i++){
if(arr[i]==s){
index=i;
//使用index后面的元素覆盖index到数组长度减一位元素,最后的结果将会出现倒数第一和倒数第二位的元素相同
//因此再使用copyof重新拷贝数组并重新将arr指向拷贝后的数组
System.arraycopy(arr,index+1,arr,index,arr.length-index-1);
arr=Arrays.copyOf(arr,arr.length-1);
break;
}
}
}
public void remove(int index){
if(index>arr.length||index<0){
System.out.println("下标不正常");
return ;
}
//使用index后面的元素覆盖index到数组长度减一位元素,最后的结果将会出现倒数第一和倒数第二位的元素相同
//因此再使用copyof重新拷贝数组并重新将arr指向拷贝后的数组
System.arraycopy(arr,index+1,arr,index,arr.length-index-1);
arr=Arrays.copyOf(arr,arr.length-1);
}
public void clear(){
arr=null;
}
@Override
public String toString() {
return
"arr=" + Arrays.toString(arr);
}
}