/** @author Adriano Luchetta @version 21-Nov-2005 @version 3-Dic-2004 */ import java.util.NoSuchElementException; public class ListaSuArray implements List { //variabili di istanza Object[] v; int vSize; //costruttore public ListaSuArray() { makeEmpty(); } public void makeEmpty() { v = new Object[1]; vSize = 0; } public boolean isEmpty() { return vSize == 0; } public int size() { return vSize; } public ListIterator getIterator() { return new ArrayIterator(); } private class ArrayIterator implements ListIterator { private int position; public ArrayIterator() { position = -1; } public boolean hasNext() { return position + 1 < vSize; } public Object next() throws NoSuchElementException { if (!hasNext()) throw new NoSuchElementException(); return v[++position]; } public void add(Object obj) { if (vSize == v.length) { Object[] vTmp = new Object[2 * vSize]; for (int i = 0; i < vSize; i++) vTmp[i] = v[i]; v = vTmp; } for (int i = vSize; i > position + 1; i--) v[i] = v[i-1]; v[position + 1] = obj; vSize++; } public void remove() throws IllegalStateException { if (position == -1) throw new IllegalStateException(); for (int i = position; i < vSize-1; i++) v[i] = v[i+1]; vSize--; position--; } } }