Løsningsforslag - oppgaver i Avsnitt 1.4.8


Oppgave 2

Lambda-uttrykket x -> x representerer det som i matematikk kalles identitetsfunksjonen, dvs. funksjonen f som er slik at f(x) = x. Det betyr at det ordnes mhp. x og det er samme som naturlig ordning siden x er en instans av en sammenlignbar type. Dermed er Komparator.orden(x -> x) og Komparator.naturligOrden() det samme.

Oppgave 3

  Komparator<Integer> c = (x,y) ->
  {
    if ((x - y) % 2 == 0) return 0;  // begge partall eller begge oddetall
    if (x % 2 == 0) return 1;        // x partall og y oddetall
    else return -1;                  // x oddetall og y partall
  };

  Integer[] a = {6,2,7,1,9,5,10,8,4,3};
  Tabell.innsettingssortering(a, c.deretter(x -> x));
  System.out.println(Arrays.toString(a));

  // Utskrift: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]

Oppgave 4

Tabell.innsettingssortering(s, Komparator.orden(String::length).deretter(x -> x));

Oppgave 5

  Tabell.innsettingssortering(s,
    Komparator.orden(String::length).omvendt().deretter(Komparator.omvendtOrden()));

eller

  Tabell.innsettingssortering(s,
    Komparator.orden(String::length).deretter(x -> x).omvendt());