import java.util.Iterator; abstract class Kull implements Iterable { protected Hund mor, far; Kull (Hund mor, Hund far) { this.mor = mor; this.far = far; } public abstract void settInn(Hund h); public abstract Iterator iterator(); } class KullListe extends Kull { private Hund forste; KullListe(Hund mor, Hund far) { super(mor, far); } @Override public void settInn(Hund nyHund) { if (forste == null) { forste = nyHund; return; } if (nyHund.compareTo(forste) > 0) { nyHund.neste = forste; forste = nyHund; return; } Hund iterHund = forste; while (iterHund.neste != null && nyHund.compareTo(iterHund.neste) < 0) { iterHund = iterHund.neste; } nyHund.neste = iterHund.neste; iterHund.neste = nyHund; } public Iterator iterator() { return new HundeListeIterator(); } class HundeListeIterator implements Iterator { private Hund iterHund = forste; @Override public Hund next() { Hund returnHund = iterHund; iterHund = iterHund.neste; return returnHund; } @Override public boolean hasNext() { return iterHund != null; } } } class KullArray extends Kull { Hund[] hundene = new Hund[60]; KullArray(Hund mor, Hund far) { super(mor, far); } @Override public void settInn(Hund nyHund) { int sekFodt = nyHund.minFodselstid.sek; nyHund.neste = hundene[sekFodt]; hundene[sekFodt] = nyHund; } public void skrivUtAlle() { for (Hund hund : this) { System.out.println(hund); } //Eller for (Hund hund : hundene) { Hund iter = hund; while (iter != null) { System.out.println(iter); } } } @Override public Iterator iterator() { //Antar at denne iteratoren er implementer return null; } }