模拟动态数组的实现
public class demo01 {
Object[] elementData = new Object[10];// 创建数组对象
int size = 0;
// 容量是否充足
public void add(Object obj) {
ensurecapcity(size + 1);
elementData[size++] = obj;
}
public void ensurecapcity(int capcity) {
if (capcity < elementData.length) {
return;
}
// 扩容操作
// 新建一个数组
Object[] newElementData = new Object[capcity * 2];
// 将原数组中元素赋值到新数组中
System.arraycopy(elementData, 0, newElementData, 0, capcity);
// 将新的数组由原数组名指向
elementData = newElementData;
}
// 判断是否越界,索引号是否合法
public void checkIndex(int index) {
if (index < 0 || index >= size) {
throw new IllegalArgumentException("索引号不合法:" + index);
}
}
// 获取指定位置的元素
public Object get(int index) {
checkIndex(index);
return elementData[index];
}
// 移除指定位置元素
public Object remove(int index) {
checkIndex(index);
Object obj = elementData[index];
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1);
elementData[--size] = null;
return obj;
}
// 清空元素
public void clear() {
for (int i = 0; i <= size; i++) {
elementData[i] = null;
}
size = 0;
}
// 返回元素实际个数
public int size() {
return size;
}
}
###测试
import java.util.Vector;
public class demo01Test {
public static void main(String[] args) {
//1.创建对象
demo01 a=new demo01();
//2.调用方法 引用名.方法名();
a.add(12);
a.add(23);
a.add(32);
System.out.println("元素个数:"+a.size());
System.out.println("移除索引号为1的元素:"+a.remove(1));
System.out.println("输出所有的元素:");
for(int i=0;i<a.size();i++) {
System.out.println(a.get(i));
}
yc.clear();
System.out.println("元素个数:"+a.size());
}
}