import java.util.Iterator; class ItererbarListeUtvidet implements Iterable { private T[] arr; // Fjerner feilmelding: Type safety: Unchecked cast from Object[] to T[] @SuppressWarnings("unchecked") public ItererbarListeUtvidet(int stoerrelse) { arr = (T[]) new Object[stoerrelse]; } // Finner ledig plass og setter inn. Hvis det er plass returneres true, // hvis det er fullt returneres false public boolean settInn(T elm) { for (int i = 0; i < arr.length; i++) { if (arr[i] == null) { arr[i] = elm; return true; } } return false; } // Oppgave: Skriv denne public boolean settInnPaaIndeks(int pos, T elm) { // Ugyldig indeks if (pos >= arr.length) { System.out.println("Ugyldig indeks: " + pos + ", arr.length: " + arr.length); return false; } // Det ligger noe her fra foer if (arr[pos] != null) { return false; } arr[pos] = elm; return true; } // Oppgave: Skriv denne public T fjernPaaIndeks(int pos) { // Ugyldig indeks if (pos >= arr.length) { System.out.println("Ugyldig indeks: " + pos + ", arr.length: " + arr.length); return null; } T elm = arr[pos]; arr[pos] = null; return elm; } @Override public Iterator iterator() { return new ListeIterator(); } // Oppgave: Oppdater hasNext() og next() slik // at Iteratoren fremdeles fungerer slik som tenkt private class ListeIterator implements Iterator { private int plassering = 0; // Sjekker om det er flere ting igjen i listen // Denne metoden er endret slik at den "hopper over" null-verdier i listen public boolean hasNext() { // Leter gjennom hele listen til vi finner et element while (plassering < arr.length) { if (arr[plassering] != null) { return true; } plassering += 1; } // Dersom vi kom gjennom hele loekken saa er // det kun null-verdier igjen i listen return false; } // Returener neste ting i listen, oeker plassering med 1 // Trenger ikke aa endres for aa loese den utvidede oppgaven public T next() { T elm = arr[plassering]; plassering += 1; return elm; } } }