模仿Arraylist自己实现底层代码

本文介绍了一个自定义的ArrayList类的实现,包括数组的初始化、扩容、添加、插入、删除、修改和查找等基本操作,展示了如何在Java中手动管理数组并提供类似ArrayList的功能。
public class NewMyArraylist {
	private Object[] elementData;//定义
	private int DEFAULT_CAPACITY=10;//默认数组容量
	private int size;//数组里对象的实际个数
	public NewMyArraylist() {
		elementData = new Object[DEFAULT_CAPACITY];
	}
	public NewMyArraylist(int definitcapacity) {
		if(definitcapacity<0) {
			try {
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		elementData = new Object[definitcapacity];
	}
	/**
	 * 返回当前数组长度
	 */
	public int getSize() {
		return size;
	}
	/**
	 * 返回数组容量
	 */
	public int getCapacity() {
		return elementData.length;
	}
	/**
	 * 判断是否需要扩容
	 */
	public void booladd() {
		if(size==elementData.length) {
			Object[] newElementData = new Object[elementData.length*2];
			for(int i=0;i<size;i++) {
				newElementData[i]=elementData[i];
			}
			elementData = newElementData;
		}
	}
	/**
	 * 添加对象
	 * @param args
	 */
	public void add(Object obj) {
		booladd();
		elementData[size++]=obj;
	}
	/**
	 * 插入
	 */
	public void insert(int index,Object obj) {
		booladd();
		if(index<0||index>size) {
			try {
				System.out.println("插入位置错误");
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		for(int i=index;i<size;i++) {
			Object temp = elementData[i];
			elementData[i]=obj;
			obj=temp;
		}
		size++;
	}
	/**
	 * 删除
	 */
	public void delete(int index) {
		if(index<0||index>size-1) {
			try {
				System.out.println("删除位置无对象");
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		for(int i=index;i<size-1;i++) {
			elementData[i]=elementData[i+1];
		}
		size--;
	}
	/**
	 * 修改
	 */
	public void setObject(int index,Object obj) {
		if(index<0||index>size-1) {
			try {
				System.out.println("删除位置无对象");
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		elementData[index] = obj;
	}
	/**
	 * 输入index返回对应的值
	 * @param args
	 */
	public Object find(int index) {
		if(index<0||index>=size) {
			try {
				System.out.println("超界");
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return elementData[index];
	}
	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		NewMyArraylist list = new NewMyArraylist(1);
		list.add("asd");
		list.add("assd");
		list.add("asd");
		list.insert(0, "insert");
		list.delete(0);
		list.setObject(0, "setObject");
		System.out.println(list.find(0));
		System.out.println("数组的容量"+list.getCapacity());
		System.out.println("数组的长度"+list.getSize());
	}
}

文记:Arraylist是对于数组的应用,并进行增,删,改,插的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值