模拟动态数组实现

模拟动态数组的实现

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());
}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值