package com.sx.structures;
public class MyArrayList implements MyList {
private int size;
private int ex=10;
private int last=-1;
private Object [] arr;
public MyArrayList() {
size = 10;
arr = new Object[size];
}
@Override
public void add(Object o) {
last++;
if(last==size){
size += ex;
Object[] temp = new Object[size];
System.arraycopy(arr, 0, temp, 0, arr.length);
arr = temp;
}
arr[last]=o;
}
@Override
public void add(int index, Object o) {
add(o);
for(int i=arr.length-1;i>index;i--)
arr[i]=arr[i-1];
arr[index]=o;
}
@Override
public Object get(int index) {
return arr[index];
}
@Override
public Object remove(int index) {
Object element = arr[index];
for(int i=index;i<last;i++)
arr[i]=arr[i+1];
last--;
return element;
}
@Override
public int size() {
return last+1;
}
public Iterator Iterator(){
return new MyArrListIterator(this);
}
private class MyArrListIterator implements Iterator{
private MyList list;
private int p = 0;
public MyArrListIterator(MyList list) {
this.list = list;
}
@Override
public boolean hasNext() {
p++;
if(p>list.size())
return false;
return true;
}
@Override
public Object next() {
if(hasNext())
return list.get(p-1);
return -1;
}
}
}