package structure;
import java.util.Arrays;
import java.util.Iterator;
import java.lang.Object;
import java.util.NoSuchElementException;
public class BaseSeqStructure<E> implements Iterable{
private Object[] seq;
private int size;
public void BaseSeqStructure() {
seq = new Object[10];
size = 0;
}
protected void add(int index, Object item) {
if (index < 0 || index > size) {
throw new IndexOutOfBoundsException(index + "out of " + size());
}
if (null == seq) {
seq = new Object[]{item};
} else {
ensureCapacity(size() + 1);
System.arraycopy(seq, index, seq, index + 1, size - index);
seq[index] = item;
}
size++;
}
protected Object remove(int index) {
if (index >= size) {
throw new IllegalArgumentException("Illegal Capacity" + index);
} else {
Object oldValue = seq[index];
System.arraycopy(seq, index + 1, seq, index, size - index - 1);
seq[--size] = null;
return oldValue;
}
}
protected int size() {
return size;
}
protected void ensureCapacity(int minCapacity) {
int oldCapacity = size();
if (minCapacity > oldCapacity) {
Object[] oldObj = seq;
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) {
int Capacity = minCapacity;
}
seq = Arrays.copyOf(oldObj, newCapacity);
}
}
public Iterator<E> iterator() {
return new Itr();
}
public class Itr implements Iterator<E>{
int cursor;
int lastRet = -1;
public boolean hasNext() {
return cursor != size;
}
public E next() {
int i = cursor;
if (i > size()) {
throw new NoSuchElementException();
}
Object[] element = BaseSeqStructure.this.seq;
cursor = i+1;
return (E)seq[i];
}
}
}