bild
Skolan för
elektroteknik
och datavetenskap

Programutvecklingsteknik

Övning 3

  1. I labb3 (Sten, sax, påse) är det naturligt att använda en String-array som innehåller dragen:

    String[] drag = {"STEN", "SAX", "PÅSE"};
    
    Om man behöver svara på frågan "Vilket index har draget d ?", där d är en String, så kan man använda en metod som går igenom vektorn och jämför d med alla drag tills man funnit det rätta.
       int index (String d, String[] drag) {
           for (int i=0; i<drag.length; i++) {
    	   if (drag[i].equals(d))
                   return i;
           }
           return -1;  // draget d fanns ej med
       }
    
    Metodanropet index("SAX", drag) bör ge svaret 1 och index("HOPP", drag) bör ge   -1.

    Hur kan man hantera detta effektivare ? Ledtråd: Använd någon subklass till Map.

  2. Java har goda hjälpmedel för sortering av objektsamlingar, dels Collection-klasserna som implementerar SortedSet och dels metoder i klassen Collections. För arrayer finns hjälpklassen Arrays.

    a. Utgå från följande schematiska klass och visa hur den ska utökas för att Person-objekt enkelt ska kunna sorteras i personnummerordning.

        class Person {
            long pnr;
            String namn;
    	Person (long p, String na) {
                pnr = p;
                namn = n;
            }
    	public String toString() {
    	    return namn + " " + pnr;
            }
            // Andra intressanta data och metoder
        }
    
    Det finns inga som helst kontroller av personnumren. Vi vill bara visa på användningen av implements Comparable m.m..

    b. Hur gör man för att skapa ett sorterat träd av Personobjekt allteftersom objekt skapas? Förklara!

    c. Hur får man utskrift i sorterad ordning av trädet?

    Antag att ett objekt av typen

         List<Person> plista;    
    
    är skapat och innehåller en stor mängd Person-objekt. Listan är inte sorterad.

    d. Hur får man listan sorterad i personnummerordning? Antag att klassen är utökad enligt uppgift a.

    e. Hur kan man få en lista av objekten sorterad i namnordning och samtidigt behålla listan sorterad i personnummerodning?

    Lösning till 2a,b,c,d,e: Person.java   För 2e behövs även PersonComp.java.


Copyright © Sidansvarig: Ann Bengtsson <ann@nada.kth.se>
Uppdaterad 2014-04-22