package com.coding.basic; public class ArrayList implements List{ private int size = 0; private Object[] elements; public ArrayList() { this.elements = new Object[5]; } public ArrayList(int size) { this.elements = new Object[size]; } public void add(Object o) { // TODO Auto-generated method stub if(isFull()) { resize(); } this.elements[this.size] = o; this.size++; } public boolean isFull () { if(this.size == this.elements.length) { return true; } return false; } public void resize() { Object[] newElements = new Object[this.elements.length*2]; System.arraycopy(elements, 0, newElements, 0, elements.length); this.elements = newElements; newElements = null; } public void add(int index, Object o) { // TODO Auto-generated method stub rangeCheck(index); if(isFull()) { resize(); } System.arraycopy(elements, index, elements, index+1,size-index); this.elements[index] = o; size++; } void rangeCheck(int index) { if(index > size || index < 0) { throw new IndexOutOfBoundsException("�±�Խ��"); } } public Object get(int index) { // TODO Auto-generated method stub rangeCheck(index); return elements[index]; } public Object remove(int index) { // TODO Auto-generated method stub rangeCheck(index); Object elem = elements[index]; System.arraycopy(elements, index+1, elements, index, size-index-1); size--; elements[size] = null; return elem; } public int size() { // TODO Auto-generated method stub return this.size; } public com.coding.basic.Iterator Iterator () { return new Itr(); } public class Itr implements com.coding.basic.Iterator{ int cur = 0; public boolean hasNext() { // TODO Auto-generated method stub if(size==cur) { return false; } return true; } public Object next() { // TODO Auto-generated method stub int i = cur; if(i < elements.length) { cur = i+1; return elements[i]; } return null; } } }