17. juli 2003 - 11:56Der er
14 kommentarer og 1 løsning
LinkedList i Java
Hej, Jeg skal til at lave et projekt i Java, og jeg ved at jeg skal bruge LinkedList, men mit problem er hvordan jeg helt præcist skal anvende det...
Opgaven går ud på, at jeg skal lave et kartotekssystem, hvor man kan indtaste enkeltpersoners samlinger, feks. cd'er, film, osv.
Mit problem er så: Skal jeg bare bruge en LinkedList til at holde styr på ALT, eller skal det deles op, så flere LinkedLists holder styr på forskellige ting?
Jeg havde forestillet mig at lave en LinkedList, som indholdte objekter, hvor et objekt er en person og hele hans samling, men er det en dårlig ide at gøre det på den måde?
Vi er endnu ikke gået igang med selve programmeringen af programmet, men vi ville først få dannet et overblik over hvordan datastrukturen skulle se ud, da den jo er rimelig vigtig for om det bliver et godt eller dårligt program...
Du skal ikke bruge LinkedList til kartoteks opgaver.
LinkedList skal du bruge til opgaver hvor du skal have en first og en last. Typisk en kø.
Til kartoteks opgaver kan du bruge ArrayList hvis du bare vil kunne slå op på nummer eller HashMap hvis du vil slå op på key.
Bemærk at det er muligt at kombinere d.v.s. at gemme de samme objekter både en en ArrayList og i to forskellige HashMap's med forskellge keys.Man gemem rnemlig kun referancer til objekterne ikke en kopi !
her et et eksempel som bruger begge. Et antal køer identifieceret ved navn:
import java.util.*;
public class Queue { private LinkedList q = null; public Queue() { q = new LinkedList(); } public void enq(Object o) { q.addLast(o); } public Object deq() { return q.removeFirst(); } }
import java.util.*;
public class QueueManager { private HashMap allq = null; public QueueManager() { allq = new HashMap(); } private Queue getQ(String name) { if(allq.containsKey(name)) { return (Queue)allq.get(name); } else { Queue q = new Queue(); allq.put(name, q); return q; } } public void enq(String name, Object o) { getQ(name).enq(o); } public Object deq(String name) { return getQ(name).deq(); } }
Har i læst den opgaveformulering vi har fået udleveret. Vi er nemlig lidt i tvivl om vi skal bruge linkedlist eller hashtabel, nok mere fordi vi ikke ved hvordan en hashtabel skal opbygges.
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.