Avatar billede kews Nybegynder
04. december 2002 - 23:03 Der er 12 kommentarer og
1 løsning

Administration af køer

Hej, er ved at lave en opgave, hvori der skal administreres køer (LinkedList) af forskellige slags. Når der så skal puttes eller hentes noget fra køen, skal det foregå let, da processen som getter/putter, kommer med en type variable....Har I nogle gode forslag til at hvad kø-manageren skal bruge til at administrere køerne med og hvordan ?
Avatar billede kews Nybegynder
04. december 2002 - 23:04 #1
Er HashMap den bedste løsning ?
Avatar billede arne_v Ekspert
04. december 2002 - 23:06 #2
Hvorfor ikke bruge LinkedList ?
Avatar billede anuseren Nybegynder
04. december 2002 - 23:09 #3
"administration af køer"

er det ikke noget bondemanden gør?

hihi...
Avatar billede arne_v Ekspert
04. december 2002 - 23:09 #4
Nu tænker jeg højt:

public class Queue {
    private LinkedList q = null;
    public Queue() {
        q = new LinkedList();
    }
    public void enq(Obect o) {
        q.addLast(o);
    }
    public Object deq() {
        Object o = q.getFirst();
        q.removeFirst();
        return o;
    }
}
Avatar billede arne_v Ekspert
04. december 2002 - 23:10 #5
Det undrer mig iøvrigt at java.util ikke har en Queue !

Gad vide om jeg har misset noget ?
Avatar billede arne_v Ekspert
04. december 2002 - 23:17 #6
Fik lige læst API'en. Man kan nøjes med:

public class Queue {
    private LinkedList q = null;
    public Queue() {
        q = new LinkedList();
    }
    public void enq(Obect o) {
        q.addLast(o);
    }
    public Object deq() {
        return q.removeFirst();
    }
}
Avatar billede arne_v Ekspert
04. december 2002 - 23:32 #7
Hvis du skal manage flere køer, så kunne du bruge HashMap,
altså noget i retning af:

(Queue som ovenfor)

public class QueueManager {
    private HashMap allq = null;
    public QueueManager() {
        allq = new HashMap();
    }
    private getQ(String name) {
        if(allq.containsKey(name)) {
            return (Queue)allq.get(name);
        } else {
            Queue q = new Queue();
            allq.put(name, q);
            return q;
        }
    }
    public enq(String name, Object o) {
        getQ(name).enq(o);
    }
    public Object deq(String name) {
        return getQ(name).deq();
    }
}
Avatar billede arne_v Ekspert
04. december 2002 - 23:33 #8
Og hvis nogen undrer sig over min skrive-lyst, så venter
jeg på at en backup skal blive færdig.
Avatar billede carstenknudsen Nybegynder
05. december 2002 - 09:42 #9
ang Queue: der ligger ingen Queue klasse i
Collections samlingen fordi den er
let at lave med de klasser der er:
    LinkedList queue = new LinkedList();
    queue.add(object); //enqueue
    Object o = queue.removeFirst(); // dequeue
Avatar billede soreno Praktikant
05. december 2002 - 10:38 #10
Men hvorfor er der så en Stack i java.util ?
Den er da lige så let at lave:

LinkedList stack = new LinkedList();
stack.addFirst(obj); //push
Object obj = stack.removeFirst(); //pop
Avatar billede carstenknudsen Nybegynder
05. december 2002 - 10:46 #11
Det er fordi at Stack klassen er fra
før Collections frameworket blev introduceret.
Den er iøvrigt nedarvet fra Vector og har
derfor alt for megen irrelevant funktionalitet.
Med nedarvning siger man at Stack er en
Vector, og det vil jeg påstå er forkert.
Avatar billede arne_v Ekspert
05. december 2002 - 11:31 #12
Se det var jo en god forklaring.
Avatar billede kews Nybegynder
08. december 2002 - 20:05 #13
Gutti...det virker nu..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester