模拟动态数组实现

it2023-08-15  68

模拟动态数组的实现

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()); } }
最新回复(0)