09. februar 2004 - 22:22Der er
17 kommentarer og 2 løsninger
Opret Hob af objekter
Jeg sidder og skal lave en mindre kalender, hvor de enkelte aftaler tildeles en prioritering og indsættes i nn hob/heap (altså én hob pr. dag i kalenderen).
Min hob er oprettet som et array (indtil videre), og jeg vil så gerne kunne indsætte objekter efter deres prioritet i denne hob.
i know, men hvordan indsætter jeg et reelt objekt efter prioritet i hob'en - det er mere det der er mit problem. Hvis jeg f.eks. skulle indsætte objektet "x" bestående af (aftale, prioritet), hvordan ville min insert() (altså løkken)så skulle se ud ?
Hvis du ønsker at have aftalerne i en prioriteret rækkefølge, kunne det være du skulle tage et kig på TreeSet, der er en sorteret struktur.
Så lader du klassen aftale implementere Comparable og tilføjer følgende metode på Aftale:
public int compareTo(Object o) { int result = 1; if (o instanceof Aftale) { Aftale a = (Aftale)o; if (getPriotitet() < a.getPriotitet()) result = -1; else if (getPriotitet() < a.getPriotitet()) result = 0; } return result; }
public int compareTo(Object o) { int result = 1; if (o instanceof Aftale) { Aftale a = (Aftale)o; if (getPriotitet() < a.getPriotitet()) result = -1; else if (getPriotitet() == a.getPriotitet()) result = 0; } return result; }
Hvordan compareTo skal udformes afhænger selvfølgelig af, hvordan du angiver aftalernes prioritet. Den jeg har vist, antager at 0 er højest prioritet og højeste værdi er lavest prioritet.
dsj => Det skal implementeres vha. en minimums hob, men derfor kan jeg vel godt bruge din kode, right ? (går ud fra at metoden skal kaldes i min while-betingelse i insert-metoden, eller...??)
ulrikm => tak for linket
men i har begge fat i noget af det jeg skal bruge, prøver lige at kigge på det, men foreløbig tak :o)...ALLE tre
Du skal ikke kalde nogen metoder. Du add'er blot Aftale-objekterne til en TreeSet-instans, og vupti ligger de i rigtig rækkefølge, defineret ud fra compareTo-metoden.
thnaks, løste det dog ved at lave en rekursiv "swap-metode" i min insert,...men jeg vil helt sikkert prøve at se om det ikke er mere optimalt med din comparableTo :o)
Håber at det er iorden at jeg splitter pointene mellem jer begge 2, efter som at det var deraf jeg fik inspirationen ;o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.