package src;
import java.util.Arrays;
/**
* Created by Yang on 2/25/2017.
*/
public class MyArrayList implements MyList {
private int size = 0;
private Object[] elementData = new Object[100];
@Override
public void add(Object obj) {
this.checkCapacity(size+1);
elementData[size++] = obj;
}
@Override
public void add(int index, Object obj) {
this.validIndex(index);
this.checkCapacity(size+1);
if(index < size){
for(int i = size; i > index; i--){
this.elementData[i] = this.elementData[i-1];
}
}else{
this.elementData[index] = obj;
}
this.size++;
}
@Override
public Object get(int index) {
this.validIndex(index);
return this.elementData[index];
}
@Override
public Object remove(int index) {
this.validIndex(index);
Object o = this.elementData[index];
for(int i = index; i < this.size-1; i++){
this.elementData[i] = this.elementData[i+1];
}
this.size--;
return o;
}
@Override
public int size() {
return this.size;
}
private void checkCapacity(int newSize) {
if(newSize > elementData.length){
this.extend(elementData);
}
}
private void extend(Object[] oldElementData) {
int newLength = (int) (oldElementData.length * 1.5);
elementData = Arrays.copyOf(oldElementData, newLength);
}
private void validIndex(int inputIndex) {
if(inputIndex > size || inputIndex < 0){
throw new RuntimeException("Index: " + inputIndex + " out of bounds( " + size +" )");
}
}
public boolean isEmpty() {
if (size() == 0){
return false;
}
return true;
}
}