1 / 14

Föreläsning 12

Föreläsning 12. Vektorer (klassen Vector) Sortering. 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

justin
Download Presentation

Föreläsning 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 < index > 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 • Exempel 1 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 2 Enumeration e = v.elements();while (e.hasMoreElements()){ Object obj = e.nextElement(); // Konvertera obj till rätt typ och gör något med det }

  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 • Hitta minsta värdet i arrayen • Byt plats med värdet på index 0 • Hitta näst minsta värdet i arrayen • Byt plats med värdet på index 1 • 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 0for (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 platsint 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 implementerargrä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: public int compareTo(Object o) • 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

  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 publicclass Vara implements Comparable{ private String typ; private int pris;public Vara(String t, int p) { typ = t; pris = p; }publicint compareTo(Object o) { Vara v = (Vara)o;return this.pris – v.pris; }} // i t.ex. mainVara[] 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);

More Related