package com.basic;
public class ArrayList implements List
{
private int size = 0;
private final int MAXNSIZE = 100;
private Object[] elementData = new Object[MAXNSIZE];
public void add(Object o) {
if (size > MAXNSIZE) {
String errorInfo = "Out of max size" + MAXNSIZE;
throw new ArrayIndexOutOfBoundsException(errorInfo);
}
elementData[size++] = o;
}
public void add(int index, Object o) {
if (index >= size && size > 0) {
String errorInfo = "Index to add: " + index
+ " is out of current size: " + size;
throw new ArrayIndexOutOfBoundsException(errorInfo);
}
for (int i = size; i > index; i--) {
elementData[i] = elementData[i - 1];
}
elementData[index] = o;
++size;
}
public Object get(int index) {
if (index < 0 || index >= size) {
String errorInfo = "Index to get: " + index
+ " is invalid, current range: 0 - " + (size - 1);
throw new ArrayIndexOutOfBoundsException(errorInfo);
}
return elementData[index];
}
public Object remove(int index) {
if (index < 0 || index >= size) {
String errorInfo = "Index to remove: " + index
+ " is invalid, current range: 0 - " + (size - 1);
throw new ArrayIndexOutOfBoundsException(errorInfo);
}
Object o = elementData[index];
for (int i = index; i < size - 1; i++) {
elementData[i] = elementData[i + 1];
}
elementData[size--] = null;
return o;
}
public int size() {
return size;
}
public Iterator iterator() {
return new Iterator() {
private int index = 0;
public boolean hasNext() {
return (index < size);
}
public Object next() {
if (hasNext()) {
return elementData[index++];
}
return null;
}
};
}
}