package com.github.fei9009.coding2017.basic;
public class ArrayList implements List {
private int size = 0;
private int capacity;
private Object[] elementData = new Object[100];
public ArrayList() {
this.capacity = 20;
}
private void extend() {
Object[] updatedElementData = new Object[this.elementData.length + this.capacity];
System.arraycopy(this.elementData, 0, updatedElementData, 0, this.elementData.length);
this.elementData = updatedElementData;
}
public void add(Object o){
if (this.size == elementData.length) {
extend();
}
elementData[size] = o;
this.size++;
}
public void add(int index, Object o){
if (this.size == elementData.length) {
extend();
}
int i;
for (i = this.size - 1; i >= index; i--) {
this.elementData[i + 1] = this.elementData[i];
}
this.elementData[i + 1] = o;
this.size++;
}
public Object get(int index){
if (index >= 0 && index < this.size) {
return this.elementData[index];
}else {
return null;
}
}
public Object remove(int index){
if (index >= 0 && index < this.size) {
int i = 0;
Object deletedElement = this.elementData[index];
for (i = index + 1; i < this.size; i++) {
this.elementData[i - 1] = this.elementData[i];
}
this.elementData[i] = null;
this.size--;
return deletedElement;
}else {
return null;
}
}
public int size(){
return this.size;
}
public Iterator iterator(){
return null;
}
}