Java容器---MyArrayList

自定义容器ArrayList,实现部分功能

/**
 * 编程实现ArrayList
 * @author Administrator
 *
 */
public class MyArrayList {
	//创建目标数组
	private Object[] elementDate;
	//数组长度
	private static int size;
	//获取长度
	public int size(){
		return size;
	}
	//无参构造方法,默认长度10
	public MyArrayList(){
		this(10);
	}
	// 有参构造方法,初始化
	public MyArrayList(int initicalCapacity){
		if (initicalCapacity<0) {
			try {
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		elementDate = new  Object[initicalCapacity];
	}
	//在数组末尾增加指定对象
	public void add(Object obj){
		ensureCapacity();
		elementDate[size++]=  obj;
	}
	//在索引位置增加指定对象,索引位置及之后的元素向后移动一位
	public void add(int index,Object obj){
		ensureCapacity();
		indexJudgement(index);
		//System.arraycopy(等待复制的数组, 开始复制的位置, 目标数组, 复制到目标数组的位置, 复制长度);
		System.arraycopy(elementDate, index, elementDate, index+1, size-index);
		elementDate[index] = obj;
		size++;
	}
	//将索引位置对象设置为指定的对象
	public Object set(int index,Object obj){
		indexJudgement(index);
		Object oldValue = elementDate[index];
		elementDate[index] = obj;
		return oldValue;
	}
	//判断数组是否为空
	public boolean isEmpty(){
		return size==0;
	}
	//获取索引位置对象
	public Object get(int index){
		indexJudgement(index);
		return elementDate[index];
	}
	//移除索引位置对象
	public void remove(int index){
		indexJudgement(index);
		int moveNum = size-index-1;
		System.arraycopy(elementDate, index+1, elementDate, index, moveNum);
		elementDate[--size]=null;
	}
	//移除第一个相同的对象
	public boolean remove(Object obj){
		for (int i = 0; i < elementDate.length; i++) {
			if (get(i).equals(obj)) {
				remove(i);
				//只移除第一个相同的对象,使用return结束方法的功能实现
				return true;
			}
		}
		return false;
	}
	//数组扩容
	public void ensureCapacity(){
		if (size+1>elementDate.length) {
			Object[] newArray = new Object[size*2+1];
//			System.arraycopy(elementDate, 0, newArray , 0, elementDate.length);
			for (int i = 0; i < elementDate.length; i++) {
				newArray [i] = elementDate[i];
				
			}
			elementDate = newArray;
		}
	}
	//索引越界判断
	public void indexJudgement(int index){
		if (index<0||index>=size) {
			try {
				throw new Exception();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
	//	List list = new ArrayList();
		MyArrayList list = new MyArrayList(3);
		list.add(555);
		list.add(0,1111);
		list.set(1, "sss");
		for (int j = 0; j < size; j++) {
			System.out.println(list.get(j));
		}
		
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值