package com.coding.basic;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public boolean add(Object o){
add(size(), o);
size++;
return true;
}
public boolean add(int index, Object o){
if (index >= 0 && index < elementData.length) {
for (int i = size(); i > index; i--) {
elementData[i] = elementData[i-1];
}
elementData[index] = o;
}
size++;
return true;
}
public Object get(int index){
if (index >= 0 && index < size()) {
return elementData[index];
}
// return null;
throw new ArrayIndexOutOfBoundsException();
}
public Object remove(int index){
Object removedItem = elementData[index];
if (index > size()) {
throw new ArrayIndexOutOfBoundsException();
}
for (int i = index; i < size() - 1; i++) {
elementData[i] = elementData[i+1];
}
size--;
return removedItem;
}
public int size(){
return size;
}
public Iterator iterator(){
return new ArrayListIterator();
}
private class ArrayListIterator implements Iterator {
private int current = 0;
public boolean hasNext() {
return current < size();
}
public Object next() {
/* if (elementData[current+1] != null) {
return elementData[current+1];
} else {
return null;
}*/
if (!hasNext()) {
throw new java.util.NoSuchElementException();
}
return elementData[current++];
}
}
}