package hjelpeklasser;
import java.util.*;
public class TabellBeholder<T> extends AbstraktBeholder<T>
{
private T[] a;
private int antall;
public TabellBeholder()
{
this(10);
}
public TabellBeholder(int størrelse)
{
a = (T[])new Object[størrelse];
antall = 0;
}
public TabellBeholder(Iterable<T> itererbar)
{
for (T verdi : itererbar) leggInn(verdi);
}
@Override
public boolean leggInn(T t)
{
if (antall == a.length) a = Arrays.copyOf(a,(3*antall)/2 + 1);
a[antall++] = t;
return true;
}
private class TabellBeholderIterator implements Iterator<T>
{
private int denne = 0;
private boolean removeOK = false;
@Override
public boolean hasNext()
{
return denne < antall;
}
@Override
public T next()
{
if (!hasNext())
throw new NoSuchElementException("Tomt eller ingen verdier igjen!");
T temp = a[denne];
denne++;
removeOK = true;
return temp;
}
@Override
public void remove()
{
if (!removeOK) throw
new IllegalStateException("Ulovlig tilstand!");
removeOK = false;
antall--;
denne--;
for (int i = denne; i < antall; i++)
{
a[i] = a[i+1];
}
a[antall] = null;
}
}
@Override
public Iterator<T> iterator()
{
return new TabellBeholderIterator();
}
}