05. juni 2004 - 18:20Der er
13 kommentarer og 1 løsning
Liste med Hashtable
Hejsa
Jeg har en class Message: public class Message { static int messageType; static String messageFrom; static long messageFromID; static String messageTo; static long messageToID; static String messageText;
public Message(int type, String from, long fromID, String to, long toID, String text) { messageType = type; messageFrom = from; messageFromID = fromID; messageTo = to; messageToID = toID; messageText = text; } public String getMessageText() { return messageText; } }
Nu vil jeg lave en liste af dem i en class Messages: import java.util.*;
public class Messages { private Hashtable msgs; static long msgID; // keys for hashtable
public Messages() { msgs = new Hashtable(); msgID = 0; }
public void putMessage(int type, String from, long fromID, String to, long toID, String text) { Message msg = new Message(type, from, fromID, to, toID, text); msgs.put(new Long(msgID++), msg); }
public Enumeration elements() { return msgs.elements(); } }
Jeg har så prøvet at få en udskrift hvad der er i den: import java.util.*;
public class TestMessage {
public static void main(String[] args) { Messages messages = new Messages(); Message aMsg;
messages.putMessage(0, "mig", 0, "dig", 0, "Besked nr. 1"); messages.putMessage(0, "mig", 0, "dig", 0, "Besked nr. 2"); messages.putMessage(0, "mig", 0, "dig", 0, "Besked nr. 3"); messages.putMessage(0, "mig", 0, "dig", 0, "Besked nr. 4");
for(Enumeration e = messages.elements(); e.hasMoreElements();) { Message Msg = (Message)e.nextElement(); System.out.println(Msg.getMessageText()); } } } men jeg får udskrevet Besker nr. 4 4 gange.. istedet for en af hver. hvad gør jeg galt.??
Dough.. ja selvfølgelig :) hehe kunne ikke forstå det.. takker mange gange.. Kan jeg ikke gøre så jeg får listen den "anden" vej.. nu kører den dem igennem baglæns ???
forskellen ligger vel primært i Vector er thread safe, ArrayList er ikke. eller i den interne håndtering af det Array som holder styr på elementerne, så vidt jeg husker udvider ArrayList med 50 % hvis den løber tør for plads, hvorimod Vector fordobler, på en Vector har du også muglighed for at sætte det antal pladser der skal udvides med.
Lidt overordnet er ArrayList andet forsøg, mens Vectpr var første forsøg.
Det er rigtigt at metoderne i Vector er thread safe, men det spiller sjældent den store rolle, da brug af Vector alligevel sjældent er thread safe uden brug af yderligere synkronisering.
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.