实现ArrayList

public class MyList {
	private transient Object[] elementData;
	private int size;
	
	public MyList(int initialCapacity) {
		elementData = new Object[initialCapacity];
	}
	public MyList() {
		this(10);
	}
	public void add(Object obj) {
		if (size == elementData.length) {
			Object[] newElementData = increase();// 扩容
			elementData = newElementData;
		}
		elementData[size++] = obj;
	}
	// 扩容方法
	public Object[] increase(){
		Object[] newElementData = new Object[(size << 1)];// 扩容到2倍
		System.arraycopy(elementData, 0, newElementData, 0,
				elementData.length);
		return newElementData;
	}
	// 删除
	public boolean remove(int i) {
		// 删除不需要考虑库容问题,把后面的索引指向下一个对象,最后一个对象清空
		if(i>=0 && i<size){
			for (int j = i; j < size; j++) {
				elementData[j] = elementData[j + 1];
			}
			size--;
			return Boolean.TRUE;
		}
		return Boolean.FALSE;
	}
	// 修改
	public boolean modify(int i,Object obj) {
		if(i>=0 && i<size){
			elementData[i]=obj;
		}
		return Boolean.FALSE;
	}
	// 获取某一个
	public Object get(int i) {
		if (i <= size) {
			return elementData[i];
		}
		return null;
	}
	public boolean isEmpty() {
		return size == 0;
	}
	public int size() {
		return size;
	}
	public static void main(String[] args) {
		MyList list = new MyList();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		list.add("6");
		list.add("7");
		list.add("8");
		list.add("9");
		list.add("10");
		list.add("11");
		list.add("12");
		list.add("13");
		list.remove(1);
		//list.modify(11, 88);// 最后一个改为88
		for (int j = 0; j < list.size; j++) {
			System.out.println(list.get(j));
		}
		System.out.println(list.get(1000));
	}
}

 删除方法用了最原始的方式,并没有用System.arraycopy,其实是一样的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值