数组扩容的方式
扩容原因:
Java数组对象在定义的时候必须指定大小,且数组对象本身是不可扩容的。
public static void main(String[] args) {
int []number = {1,2,3}; //定义数组
number[4]=1;
}
扩容方式1:
建立一个新的数组,通过for循环来进行拷贝扩容
public static void main(String[] args) {
int []number = {1,2,3}; //定义数组
int[] appendNumber=new int[number.length*2];//number.length:长度,number数组的长度,即数组中数据的个数
for(int i=0;i<number.length;i++){
appendNumber[i]=number[i];
}
appendNumber[3]=1;
appendNumber[4]=1;
appendNumber[5]=1;
System.out.println(Arrays.toString(appendNumber));//这个函数就是将数组appendNumber进行遍历并输出
}
扩容方式2:
System.arraycopy()实现复制数组
public static void main(String[] args) {
int []number = {1,2,3}; //定义数组
int[] appendNumber=new int[number.length*2];//a.length:长度,a数组的长度,即数组中数据的个数
System.arraycopy(number,0,appendNumber,0,number.length);
appendNumber[3]=1;
appendNumber[4]=1;
appendNumber[5]=1;
System.out.println(Arrays.toString(appendNumber));//这个函数就是将数组b进行遍历并输出
}
System.arraycopy(src, srcPos, dest, destPos, length);
Object src : 原数组
int srcPos : 从元数据的起始位置开始
Object dest : 目标数组
int destPos : 目标数组的开始起始位置
int length : 要copy的数组的长度
扩容方式3:
Arrays.copyOf()可以简便的创建数组副本
public static void main(String[] args) {
int []number = {1,2,3}; //定义数组
int[] appendNumber=Arrays.copyOf(number, number.length*2);//a.length:长度,a数组的长度,即数组中数据的个数
appendNumber[3]=1;
appendNumber[4]=1;
appendNumber[5]=1;
System.out.println(Arrays.toString(appendNumber));//这个函数就是将数组b进行遍历并输出
}
Arrays.copyOf(original, newLength)
original:原数组
newLength:新数组大小
本质:
创建数组副本的同时将数组长度增加就变通的实现了数组的扩容
效率问题:
System.arraycopy >Arrays.copyOf>for循环