package hjelpeklasser;
import java.util.*;
public abstract class AbstraktBeholder<T> implements Beholder<T>
{
@Override
public abstract boolean leggInn(T t);
@Override
public boolean inneholder(T t)
{
if (t == null)
{
for (T s : this) if (s == null) return true;
}
else
{
for (T s : this) if (t.equals(s)) return true;
}
return false;
}
@Override
public boolean fjern(T t)
{
Iterator<T> i = iterator();
if (t == null)
{
while (i.hasNext())
{
if (i.next() == null)
{
i.remove();
return true;
}
}
}
else
{
while (i.hasNext())
{
if (t.equals(i.next()))
{
i.remove();
return true;
}
}
}
return false;
}
@Override
public int antall()
{
int antall = 0;
for (T t : this) antall++;
return antall;
}
@Override
public boolean tom()
{
return antall() == 0;
}
@Override
public void nullstill()
{
for (Iterator<T> i = iterator(); i.hasNext(); )
{
i.next();
i.remove();
}
}
@Override
public abstract Iterator<T> iterator();
@Override
public String toString()
{
StringBuilder s = new StringBuilder("[");
Iterator<T> i = iterator();
if (i.hasNext()) s.append(i.next());
while (i.hasNext())
{
s.append(',');
s.append(' ');
s.append(i.next());
}
s.append(']');
return s.toString();
}
}