目录
我们需要的属性有
(1)静态数组作为容器
(2)size作为逻辑大小
(3)capacity作为容量
//动态数组类 public class DynamicArray { //逻辑大小,可以简单理解成也就是当前这个数组的长度 //size-1是数组中的最后一个元素 private int size=0; private int capacity=8;//容量大小 private int[] array={}; }
在指定索引添加元素,我的思路是这样的,假如是在规定范围内index索引出添加元素,那么index后面的元素要向后移动给他腾地方,之后index换成指定值即可。
//向最后面添加元素 public void addLast(int element){ array[size]=element; size++; } //向指定位置添加元素 public void add(int index,int element){ if(index>=0&&index<=size-1){ //插入的位置是在数组内 //将第一个参数的array数组从index索引开始移动到(复制)到第三个参数的array数组从索引index+1开始,移动的数量是size-index System.arraycopy(array,index,array,index+1,size-index); } //不符合条件的也就是>=size的,下面逻辑也可以走,索引<0暂时不考虑 array[index]=element; size++; }
删除指定索引处的元素,思路如下:
假如删除index索引处的元素,那么index就后面的元素向前移动一格就行,将index索引处的元素给覆盖就行。
//删除指定索引的值,返回被删除的值 public int remove(int index){ int removed=array[index];//被删除的值 if(index<size-1){ System.arraycopy(array,index+1,array,index,size-index-1); } //如果删除的索引是最后一个,直接逻辑大小减一就行 size--; return removed; }
//删除指定索引的值,返回被删除的值 public int remove(int index){ int removed=array[index];//被删除的值 if(index<size-1){ System.arraycopy(array,index+1,array,index,size-index-1); } //如果删除的索引是最后一个,直接逻辑大小减一就行 size--; return removed; }
关于这个ArrayList的用法,我之前写过了,大家可以看看:ArratList的基本用法