Løsningsforslag - oppgaver i Avsnitt 3.2.7


Oppgave 2

  Integer[] a = Tabell.randPermInteger(10);
  Liste<Integer> liste = new TabellListe<>(a);

  Integer maks = Beholdere.maks(liste,Comparator.naturalOrder());
  Integer min = Beholdere.maks(liste,Comparator.reverseOrder());

  System.out.println(maks + " " + min);

Oppgave 3

I metoden under antas det at det ikke er null-verdier i itererbar. Hvis det tillates null-verdier må koden utvides noe.

  public static int frekvens(Iterable<?> itererbar, Object o)
  {
    int antall = 0;
    for (Object x : itererbar) if (x.equals(o)) antall++;
    return antall;
  }

Oppgave 4

  public static <T> int maks(Liste<T> liste, Comparator<? super T> c)
  {
    if (liste.tom()) throw
      new NoSuchElementException("listen er tom");

    Iterator<T> it = liste.iterator();
    int m = 0;
    T maksverdi = it.next();  // finnes siden listen ikke er tom

    for (int i = 1; it.hasNext(); i++)
    {
      T verdi = it.next();
      if (c.compare(verdi,maksverdi) > 0)
      {
        m = i; maksverdi = verdi;
      }
    }
    return m;
  }