Presentation laddar. Vänta.

Presentation laddar. Vänta.

Föreläsning 12 Vektorer (klassen Vector) Sortering.

Liknande presentationer


En presentation över ämnet: "Föreläsning 12 Vektorer (klassen Vector) Sortering."— Presentationens avskrift:

1 Föreläsning 12 Vektorer (klassen Vector) Sortering

2 Vector Kan ses som en dynamisk array Har metoder för att bl.a. lägga till, ta bort och returnera objekt Består internt av en array av Object Kan lagra alla typer av objekt (samtidigt) Kan inte hantera primitivatyper Finns i paketet java.util

3 Vector Har både en storlek och en kapacitet storlek– antal inlagda objekt kapacitet – totalt som kan läggas in Ändrar kapaciteten automatiskt Måste konvertera objekt som tas ut Är mer flexibel, men inte lika effektiv som en array

4 Skapa Vector Vector v = new Vector(); Skapar ny vektor med kapacitet 10 Fördubblas vid varje ökning (ökar exp.) Vector v = new Vector(35); Skapar ny vektor med kapacitet 35 Fördubblas vid varje ökning (ökar exp.) Vector v = new Vector(35, 5); Skapar ny vektor med kapacitet 35 Ökar med 5 element varje gång

5 Storlek Och Kapacitet int storlek = v.size(); Returnerar antalet inlagda objekt int kapacitet = v.capacity(); Returnerar antal objekt som kan lagras v.setSize(10); Sätter storlek exakt till 10. Fyller på med null -referenser eller tar bort befintliga v.trimToSize() Sätter kapaciteten till aktuell storlek

6 Lägga Till Element v.addElement(new Person("Kalle", 33)); Lägger till ett nytt objekt efter det sista Ökar kapaciteten om det krävs v.setElementAt(new Person("Stina", 8), 6); Lägger in ett objekt på angivet index (6) Skriver ev. över det som finns sen förut v.insertElementAt(new Person("Bo", 12), 3); Skjuter in ett objekt på angivet index (3) Flyttar fram övriga objekt ett steg

7 Ta Bort Element v.removeElementAt(1); Tar bort objektet på angivet index (1) 0 v.size() Flyttar övriga objekt v.removeAllElements(); Tar bort alla inlagda objekt (size sätts till 0) boolean tom = v.isEmpty(); Kontrollerar om vektorn innehåller några objekt eller inte ( true eller false )

8 Hämta Ut Element Object first = v.firstElement(); Returnerar första elementet i vektorn Object last = v.lastElement(); Returnerar sista elementet i vektorn Object obj = v.elementAt(2); Returnerar elementet på angivet index (2) Måste konvertera till rätt typ av objekt! if (obj instanceof Person) { Person p = (Person)obj; p.print(); }

9 Loopa Igenom Alla Element for (int i = 0; i < v.size(); i++) { Object obj = v.elementAt(i); // Konvertera obj till rätt typ och gör något med det } Exempel 1 Enumeration e = v.elements(); while (e.hasMoreElements()) { Object obj = e.nextElement(); // Konvertera obj till rätt typ och gör något med det } Exempel 2

10 Sortering Ett vanligt förekommande problem Kan användas t.ex. för att: Presentera data på ett sätt så att det är lätt att söka i det för användaren Uppnå effektiv sökning Finns flera olika algoritmer Från långsamma men lätta att förstå Till snabba men svåra att förstå

11 Urvalssortering (Selection sort) Sortera en array med heltal 1. Hitta minsta värdet i arrayen 2. Byt plats med värdet på index 0 3. Hitta näst minsta värdet i arrayen 4. Byt plats med värdet på index 1 5. Fortsätt tills hela arrayen är sorterad for (int i = 0; i < array.length – 1; i++) { int minIndex = i; // Gissar att minsta talet finns på index 0 for (int j = i + 1; j < array.length; j++) { if (array[j] < array[minIndex]; // Är övriga tal < minIndex minIndex = j; // Isf sätter vi nytt minIndex } // Dags att byta plats int tmp = array[i]; array[i] = array[minIndex]; array[minIndex] = tmp; }

12 Sortering med Arrays Klassen Arrays innehåller statiska metoder för att enkelt kunna: söka, sortera, jämföra och fylla arrayer Finns i paketet java.util Sorterar alla primitiva typer (ej boolean ) Samt alla objekt som implementerar gränssnittet Comparable import java.util.*; int[] a = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; Arrays.sort(a);

13 Sortering Med Comparable Comparable är ett gränssnitt som anger att något är jämförbart Innehåller endast en metod: Som jämför aktuellt objekt med objektet o och… Returnerar -1 om aktuellt objekt kommer före objekt o Returnerar 0 om aktuellt objekt och objekt o är lika Returnerar 1 om aktuellt objekt kommer efter objekt o Vi måste själva bestämma hur denna jämförelse ska utföras public int compareTo(Object o)

14 Sortering Med Comparable Kan t.ex. implementeras i de klasser vi vill kunna sortera med Arrays Måste konvertera objekt o till rätt typ public class Vara implements Comparable { private String typ; private int pris; public Vara(String t, int p) { typ = t; pris = p; } public int compareTo(Object o) { Vara v = (Vara)o; return this.pris – v.pris; } } // i t.ex. main Vara[] varor = new Vara[3]; varor[0] = new Vara("Bil", 50000); varor[1] = new Vara("Läsk", 10); varor[2] = new Vara("Pizza", 50); Arrays.sort(varor);


Ladda ner ppt "Föreläsning 12 Vektorer (klassen Vector) Sortering."

Liknande presentationer


Google-annonser