Oppgave 2
public static void main(String... args) { Student[] s = new Student[9]; // en studenttabell s[0] = new Student("Kari","Svendsen",Studium.Data); // Kari Svendsen s[1] = new Student("Boris","Zukanovic",Studium.IT); // Boris Zukanovic s[2] = new Student("Ali","Kahn",Studium.Anvendt); // Ali Kahn s[3] = new Student("Azra","Zukanovic",Studium.IT); // Azra Zukanovic s[4] = new Student("Kari","Pettersen",Studium.Data); // Kari Pettersen s[5] = new Student("Anders","Åsen",Studium.Elektro); // Anders Åsen s[6] = new Student("Kari","Østsiden",Studium.Elektro); // Kari Østsiden s[7] = new Student("Per","Jensen",Studium.Enkeltemne); // Per Jensen s[8] = new Student("Kari","Lie",Studium.Enkeltemne); // Kari Lie Tabell.innsettingssortering(s, (s1,s2) -> { int k = s1.studium().compareTo(s2.studium()); return k != 0 ? k : s1.compareTo(s2); } ); for (Student t : s) System.out.println(t); }
Oppgave 3
Tabell.innsettingssortering(s, (s1,s2) -> { int k = s1.studium().compareTo(s2.studium()); if (k != 0) return k; k = s1.fornavn().compareTo(s2.fornavn()); if (k != 0) return k; return s1.etternavn().compareTo(s2.etternavn()); } );
Oppgave 4
public static <T> int maks(T[] a, Komparator<? super T> c) { return maks(a, 0, a.length, c); // kaller metoden nedenfor } public static <T> int maks(T[] a, int fra, int til, Komparator<? super T> c) { fratilKontroll(a.length,fra,til); if (fra == til) throw new NoSuchElementException ("fra(" + fra + ") = til(" + til + ") - tomt tabellintervall!"); int m = fra; // indeks til største verdi T maksverdi = a[fra]; // største verdi for (int i = fra + 1; i < til; i++) // går gjennom intervallet { if (c.compare(a[i],maksverdi) > 0) // bruker komparatoren { maksverdi = a[i]; // største verdi oppdateres m = i; // indeks til største verdi oppdateres } } return m; // posisjonen til største verdi } // maks
Oppgave 5
String[] s = {"21","18","8","13","20","6","16","25","3","10"}; Tabell.innsettingssortering(s, (x,y) -> { int k = x.length() - y.length(); return k != 0 ? k : x.compareTo(y); } ); System.out.println(Arrays.toString(s)); // Utskrift: [3, 6, 8, 10, 13, 16, 18, 20, 21, 25]
Oppgave 6
Komparator<Integer> c = (x,y) -> { if (((x - y) & 1) == 0) // x og y oddetall eller x og y partall { if (x < y) return -1; else if (x > y) return 1; else return 0; } else if ((x & 1) == 0) return 1; // x partall og y oddetall else return -1; // x oddetall og y partall };
Oppgave 7
Komparator<Student> c = (s1,s2) -> { int cmp = s1.studium().name().compareTo(s2.studium().name()); return cmp != 0 ? cmp : s1.compareTo(s2); };
Oppgave 8
Arrays.sort(s, (s1,s2) -> s1.klasse().compareTo(s2.klasse()));