Avatar billede hostgirl Nybegynder
13. marts 2008 - 18:45 Der er 21 kommentarer og
1 løsning

Hjælp med HashMap

Hej eksperter

Jeg har et problemet med et hashmap. Hashmap'ets key er en string også ønsker jeg dens value skal være et object.

Hvis jeg bruger:

  map.put("test", bil);  // bil er et objekt, se længere nede i dette indlæg

så tilføjer den fint nok når jeg udskriver størrelsen af map'et med map.size();

Det jeg ønsker er at udskrive det jeg lige har tilføjet. Det jeg har prøvet er følgende:

Iterator iterator  = map.entrySet().iterator();
   
  while( iterator. hasNext() ){
  System.out.println( iterator.next() );

men den udskriver: test=bilprogram.bil@addbf1  men det jeg ønsker at udskrive de variabler som er i objektet bil.

new bil("Ford", "Kbh", "Kl. 10.00", "KBH", false)

Håber i er med på hvad jeg mener.. på forhånd tak
Avatar billede arne_v Ekspert
13. marts 2008 - 18:52 #1
proev og lav en toString metode i din bil klasse
Avatar billede hostgirl Nybegynder
13. marts 2008 - 19:01 #2
Jeg har lavet følgende, men hvordan skal jeg så bruge den?

public String toString();
String s = ”Mærke: ” + mærke + ” Destination: ” + destination);
return s;
Avatar billede arne_v Ekspert
13. marts 2008 - 19:02 #3
Den skulle gerne blive brugt automatisk naar du udskriver din entry.
Avatar billede hostgirl Nybegynder
13. marts 2008 - 19:08 #4
fedt det virker... mange tak for din hurtige respons. Er lidt ny i obeject programmering, så der er lang vej :)

Smid et svar ved lejlighed :)
Avatar billede arne_v Ekspert
13. marts 2008 - 19:14 #5
svar
Avatar billede arne_v Ekspert
13. marts 2008 - 19:19 #6
Det er ofte en god ide med en toString i den slags data klasser - ikke saa meget fordi
den skal bruges i den egentlige applikation slogik, men det goer livet lidt nemmere
under udviklingen at man lige kan skrive et objekt ud og faa noget fornuftigt ud af det.
Avatar billede hostgirl Nybegynder
13. marts 2008 - 19:42 #7
ja, var fint i hvert fald :)

men jeg har stadig et lille problem:
public Object getFromHashMap(String idKey)  // idkey = Ford i dette eks.

if( map.containsKey("Ford") )
      {
          return map.get("Ford");

      }
Men her returner den ikke objektet (returnerer 0), men hvis jeg udskriver det med:

Iterator iterator  = map.entrySet().iterator();
   
  while( iterator. hasNext() ){
  System.out.println( iterator.next() );

udskriver den fint alle parameterne. Hvorfor kommer det objekt ikke retur på samme måde som da den blev udskrevet før?
Avatar billede arne_v Ekspert
13. marts 2008 - 20:00 #8
Bliver bil objektet med "Ford" gemt i map med key "Ford" ??
Avatar billede hostgirl Nybegynder
13. marts 2008 - 20:01 #9
Ja det er korrekt:

public void putToHashMap(String idKey, Object bil)
{     
    theHashMap.put(idKey, bil);
}
Således gør jeg
Avatar billede hostgirl Nybegynder
13. marts 2008 - 20:06 #10
jeg ved ikke om det jeg gør giver mening overhovedet.. er som før nævnt ny i objekt programmering, så det jeg egentlig prøver på, er at oprette en række objekter (bil) også gemmer disse i en hashmap således jeg kan tjekke på om en bil er oprettet i forvejen.
Avatar billede arne_v Ekspert
13. marts 2008 - 20:08 #11
idKey har vaerdien "Ford" ?
Avatar billede hostgirl Nybegynder
13. marts 2008 - 20:09 #12
ja
Avatar billede arne_v Ekspert
13. marts 2008 - 20:17 #13
saa skal map.containsKey("Ford") ogsaa returnere true og map.get("Ford") returnere
bil objektet

kan du poste noget komplet kode med problemet ?
Avatar billede hostgirl Nybegynder
13. marts 2008 - 20:23 #14
Således smider jeg på stakken:

I main:

HashMapped map = new HashMapped();
map.putToHashMap("ford", new bil("Ford", "Kbh", false)); Objektet bil (java.bil) er blot en konstruktør hvor en række strings variable bliver sat. Indeholder kun variabler som holder på "Ford", "Kbh", false.

i HashMapped.java har jeg så:

public void putToHashMap(String idKey, Object theMap)
{     
  theHashMap.put(idKey, theMap);
}

public Object getFromHashMap(String idKey)

  // Her vil jeg gerne returnere ("Ford", "Kbh", false) når idKey = "Ford"
}

Håber dette hælper lidt på det
Avatar billede hostgirl Nybegynder
13. marts 2008 - 20:24 #15
og nu indeholder den selvfølgelig også en toString() metode.
Avatar billede arne_v Ekspert
13. marts 2008 - 20:34 #16
map.putToHashMap("ford", new bil("Ford", "Kbh", false));

"ford" med lille er ikke det samme som "Ford" med stort
Avatar billede hostgirl Nybegynder
13. marts 2008 - 20:36 #17
okay, var en taste fejl, de skal i hvert fald bare være ens, så "Ford" :)
Avatar billede hostgirl Nybegynder
13. marts 2008 - 23:00 #18
skal jeg oprette en ny tråd med det? for du har jo ligesom besvaret mit oprindelige spørgsmål :)
Avatar billede arne_v Ekspert
13. marts 2008 - 23:18 #19
Det hjalp ikke at rette "ford" til "Ford" ?
Avatar billede hostgirl Nybegynder
13. marts 2008 - 23:45 #20
nej, den returnerer desværre bare 0; :(

det er også lidt misvisende:
I main:

HashMapped map = new HashMapped();  // her opretter vi en new hashmap
map.putToHashMap("MinBil2", new bil("VW", "Slagelse", true)); // key og bilmærke
map.putToHashMap("MinBil1", new bil("Ford", "Kbh", false)); // key og bilmærke behøver ikke være det samme.

også har jeg en anden fil. HasMapped.java:

public void putToHashMap(String idKey, Object theMap)
{     
  theHashMap.put(idKey, theMap);
}

public Object getFromHashMap(String idKey)

  // Her vil jeg gerne returnere ("Ford", "Kbh", false) når idKey = "MinBil"
  // Her vil jeg gerne returnere ("VW", "Slagelse", true) når idKey = "MinBil2"

}

også har jeg en 3. fil: bil.java:

class bil
{
    // Initialisering af variabler. Alle variabler er private for at undgå adgang udefra klassen.
    public String Mærke;
    public String Destination;
    public boolean Solgt;
   
    public bil(String mrk, String des, boolean sold)
    {
        Mærke = mrk;
        Destination = des;
        Solgt =  sold;
    }
   
    public String toString()
{
        String s = "Mærke:" + mrk;
          return s;
}

}

Programmet compiler fint nok, så hvis der er nogle syntaks fejl i ovenstående skal de selvfølgelig bare ignores. Håber det hjælper dig lidt på vej til hvad jeg vil :)
Avatar billede hostgirl Nybegynder
13. marts 2008 - 23:51 #21
String s = "Mærke:" + mrk; har jeg ændret til:

String s = "Mærke:" + Mærke;
Avatar billede hostgirl Nybegynder
13. marts 2008 - 23:54 #22
ahh, jeg har fået det til at virke nu :) mange tak for hjælpen... det gælder jo om at tænke sig om... MEGET undskyld jeg har taget din tid... var en meget pinlig fejl..
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