Java容器對List的實現

import java.util.Arrays;


public class Collection_4_23_01 {
	public static void main(String[] args) {
		/*
		 * 容器
		 * 
		 */
		
		ArrayList_py ArrayList_py1 = new ArrayList_py();
		ArrayList_py1.add("ppyy");
		ArrayList_py1.add("ooii");
		ArrayList_py1.add("xxqq");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		ArrayList_py1.add("qqxx");
		
		
		ArrayList_py1.showIt();
		System.out.println("數組的長度是 "+ArrayList_py1.getSize());
		System.out.println("第二個元素是 "+ArrayList_py1.getElement(1));
		
	}
}

interface List {
	//增長元素
	void add (Object element);
	//刪除元素
	void remove (int idx);
	//獲取長度
	int getSize ();
	//獲取元素
	Object getElement(int idx);
}

class ArrayList_py implements List {
	private Object[] datas;		//存儲數據的數組
	private int arrLength;		//數組長度
	private int size;			//元素個數
	
	{
		datas = new Object[10];
		arrLength = 10;
		size = 0;
	}
	
	public void add (Object element) {
		this.datas[size] = element;		//將數據放入數組中
		this.size++;					//元素個數加一
		if (this.size >= this.arrLength) {
			Object[] datas2 = new Object[arrLength+10];
			System.arraycopy(datas, 0, datas2, 0, datas.length);
			this.datas = datas2;		//地址替換
		}
	}
	
	public void remove (int idx) {
		System.arraycopy(this.datas,idx+1,this.datas,idx,this.datas.length-(idx+1));
		this.size--;
	}
	
	public int getSize () {
		return this.size;
	}
	
	public Object getElement(int idx) {
		if (idx < 0 || idx > this.size-1) {
			throw new ArrayIndexOutOfBoundsException("傳入位置有問題,沒法找到元素");
		}
		return this.datas[idx];
	}
	
	public void showIt () {
		for (int i = 0; i < this.size; i++) {
			if (this.datas[i] != null) {
				System.out.print("[ "+this.datas[i]+" ] ");
			}
		}
		System.out.println("");
	}
}
相關文章
相關標籤/搜索