08. maj 2003 - 12:02Der er
14 kommentarer og 1 løsning
Linked list ?
Jeg skal gemme Kundenummer, Gade, Nr, rutenr og aflev.nr. Hvilken ADT vil være bedst ? Jeg mener en linked list. Jeg giver 200 point til en brugbar linked list, da jeg er lidt på bar bund, og det er til en opgave :o)
Start med at kigge i java.util pakken - der findes en linkedlist. LinkedList list = new LinkedList(); Kunde k1 = new Kunde(kundenr, gade, nr, rutenr, aflnr); list.add(k1);
Med en HashMap har put/get metoden en tidskompleksitet på O(1) En LinkedList har O(1) hvis der hentes fra start eller slut af liste. Hvis der skal søges på et specifikt objekt i en LinkedListe er tidskompleksiteten O(n).
public class Kartotek { private HashMap data; public Kartotek() { data = new HashMap(); } public void add(Kunde kunde) { data.put(kunde.getKundenr(), kunde); } public Kunde find(String kundenr) { return (Kunde)data.get(kundenr); } }
package kartotek;
public class Demo {
public static void main(String[] args) { Kartotek k = new Kartotek(); k.add(new Kunde("1", "Storegade", "11", "R1", "A1")); k.add(new Kunde("2", "Lillegade", "22", "R2", "A2")); System.out.println(k.find("1")); } }
Det kan man da godt. Hvis man er på bar bund så er det da genialt at man kan kigge hvordan andre har gjort - det er jo mere eller mindre sådan man lærer nyt stof :-)
Det er noget jeg *\burde*\ have lært, men nu skal jeg bare bruge den liste. Men det gik stærkt med at få en hulens masse svar. Jeg vender tilbage med points når jeg har kigget det igennem, over middag
Tak for hjælpen allesammen. Det viser sig at jeg har lært en hel del mere end man lige skulle tro. Som jeg skrev i toppen, giver jeg points til brugbar kode, så det bliver Arne V der scorer points. Håber det er okay med Jer andre !
public class HashMapSort { public static void main(String[] args) { HashMap hm = new HashMap(); hm.put("c","3"); hm.put("b","2"); hm.put("a","1"); System.out.println(hm); Object[] sa = hm.keySet().toArray(); Arrays.sort(sa); for(int i = 0; i < sa.length; i++) { String key = (String)sa[i]; String value = (String)hm.get(key); System.out.println(key + "->" + value); }
} }
Klassen Kartotek kunne så have en metode:
public Object[] allSorted() { Object[] sa = hm.keySet().toArray(); Arrays.sort(sa); return sa; }
Synes godt om
Ny brugerNybegynder
Din løsning...
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.