package com.github.chaoswang.learning.java.collection.myown; import java.util.Arrays; public class MyArrayList<E> { private int size = 0; private int initialSize; private Object[] elements = null; public MyArrayList(int initialSize){ this.initialSize = initialSize; elements = new Object[initialSize]; } public void add(E element){ //�ﵽ�������ޣ���initialSize����50% if(++size == elements.length){ elements = Arrays.copyOf(elements, size + (int)Math.round(initialSize * 0.5)); } elements[size - 1] = element; } //�� public void add(int index, E element){ //index=sizeʱ���൱�ڵ���add���� if(index < 0 || index > size){ throw new IndexOutOfBoundsException(); } for (int i=size; i > index; i--){ elements[i] = elements[i - 1]; } elements[index] = element; } //�� public E remove(int index){ E removed = (E)elements[index]; for(int i=index; i<size -1; i++){ elements[i] = elements[i+1]; } elements[size -1] = null; size--; return removed; } //�� public E get(int index){ return (E)elements[index]; } public int size(){ return size; } //ʹ�õ������ĺô����������ڲ�ʵ�֣�ֻ���Ⱪ¶hasnext��next������Ԫ�� public MyIterator iterator(){ return new ArrayListIterator(); } //����ط�������static�ڲ��࣬��ΪҪ��ʵ����(Ҫʹ��OuterClass�Ķ����� private class ArrayListIterator implements MyIterator{ int position = 0;//������ָ�� public boolean hasNext() { return position == size - 1 ? false : true; } public Object next() { return elements[position++]; } /** * �ӵ�����ָ��� collection ���Ƴ����������ص����һ��Ԫ�� * ÿ�ε��� next ֻ�ܵ���һ�δ˷����� */ public void remove() { MyArrayList.this.remove(position); } } }