在进行数组扩容之前,我们应该学会怎么用java语言创建一个数组。数组首先需要的就是数组的容量大小,也就是数组的长度,我们可以定义一个私有化的int类型变量来充当数组的长度,其次数组需要的就是数值了。
//定义数组长度
private int size=0;
//定义数组容积大小,初始化长度为8
private int capacity8;
//创建数组
private int [] arr=new int[capacity];
接下来的操作便是对数组内的元素进行赋值操作,因为现在主流写代码方式为函数式编程,那么进行添加操作应创建一个新的add函数,再进行添加之前,首先要做的事情是对数组进行检查,看长度是否够存下你要添加的值,然后再进行添加。
if(size==capacity){
//进行扩容
//位移运算符进行扩容,扩大为原来的1.5倍
capacity+=capacity>>1;
//创建新数组,替换掉原来小内存数组
int[] newarr=new int[capacity];
//利用arraycopy方法进行数组复制
/*第一个参数原数组
第二个参数原数组中被复制数组开始元素的下标
第三个参数目标数组
第四个参数目标数组从第几个开始添加
*/
System.arraycopy(arr,0,newarr,0,size);
}
接下来就是逻辑添加部分,也主要使用arraycopy函数进行添加。
index //添加位置
element //添加元素
//添加逻辑
if(index>0 && index<size)
{
//第五个参数,从数据源中,一共拿了几个数值放到目标数组中
System.arraycopy(arr, index, arr, index + 1, size - index);
}
arr[index] = element;
size++;
完整代码演示
public class DynamicArray {
private int size=0;
private int capacity=8;
private int [] arr=new int[capacity];
//调用添加函数
public void addLast(int element){
add(size,element);
}
public void add(int index ,int element){
//容量检查
if(size==capacity){
//进行扩容
capacity+=capacity>>>1;
int[] newarr=new int[capacity];
System.arraycopy(arr,0,newarr,0,size);
}
//添加逻辑
if(index>0 && index<size) {
System.arraycopy(arr, index, arr, index + 1, size - index);
}
arr[index] = element;
size++;
}
}
谢谢各位读者老爷的观看!!