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 dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.