欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java容器---MyArrayList

程序员文章站 2024-01-15 08:45:40
...

自定义容器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));
		}
		
		
	}
}

相关标签: Java容器

上一篇: php的有关问题

下一篇: Java 容器