一、动态数组
动态数组:就是在普通数组上,增加了一个可以根据元素的个数动态调整数组大小的功能。之前的普通数组最大的问题就是数组长度定长,一旦一个数组在定义时确定长度之后,在使用过程中无法修改这个长度。
Java中提供的数组都是静态数组 int类型、char类型、long类型、(定义之后没法改变长度),需要我们自己来定义一个类,拓展基础数组的功能。
那么我们究竟是如何动态的调整数组的大小呢,实际上就是当我们数组已经满了的时候,使用Arrays.copyOf(data,data.length*2);来给数组扩容,这样就把旧数组的所有内容复制到新数组中,新数组的长度为原来数组的二倍。
二、代码实现
只要是数据结构无外乎增删改查
1.增加
代码如下:
public class MyArray{
//整型数组data
private int[] data;
//当前动态数组中已经存储的元素个数
private int size;
//有参构造,定义数组的长度
public MyArray(int initCap) {
this.data = new int[initCap];
}
//实现一个扩容的方法
private void grow() {
this.data = Arrays.copyOf(data, data.length * 2);
}
}
//为了让数组能打印出来,我们重写toString方法
public String toString() {
String ret = "[";
//此时取得是有效数据,所以小于size
for (int i = 0; i < size; i++) {
ret = ret + data[i];
if (i != size - 1) {
ret = ret + ",";
}
}
ret = ret + "]";
return ret;
}
//在当前数组中添加一个新元素val
public void add(int val) {
data