Avatar billede ladbye Nybegynder
20. december 2005 - 17:50 Der er 6 kommentarer og
1 løsning

Print indhold af hashmap, ved brug af iterator

Jeg er igang med at lave en opgave, hvor jeg har lavet at katalog over DVD'er ved brug af et hashmap. Nu skal jeg have printet en liste ud over indholdet i hashmappet der består af (k,v)=(title,description).

Jeg har fået lavet min printfunktion således at den printer key-værdien ud, men jeg kan ikke få den til at skrive value-værdien bagefter. Resultaten skal gerne blive en liste der ser således ud, f.eks.:
Superman, film om en mand der kan flyve
Green mile, en fyr der sidder i fængsel
osv.

Her er min kode (printfunktionen er nederst):

-----------------------------------------------------------------------

import java.util.HashMap;
import java.util.Iterator;

public class DVDCatalogue
{
    private String owner;
    private HashMap allDVDs;
   
    public DVDCatalogue( String name )
    {
        owner = name;
        allDVDs = new HashMap();
    }

    public void addDVD( String title, String description )
    {
        allDVDs.put(title,description);
    }
   
    public String getDVD( String title )
    {
        String description = (String)allDVDs.get(title);
        return description;
    }
   
    public void printAllDVDs()
    {
        Iterator iter = allDVDs.keySet().iterator();
        while(iter.hasNext()) {
            System.out.println(iter.next());
        }
    }
}
Avatar billede schwarz84 Nybegynder
20. december 2005 - 18:01 #1
Hvad med:

    public void printAllDVDs()
    {
        Iterator iter = allDVDs.keySet().iterator();
        while(iter.hasNext()) {
            String title = (String)iter.next();
            System.out.println(title + ", " + addDVDs.get(title));
        }
    }
Avatar billede schwarz84 Nybegynder
20. december 2005 - 18:05 #2
Du ville i øvrigt gøre tingene en del nemmere for dig selv ved at bruge Java's generics. Så ville ovenstående metode se således ud:

    public void printAllDVDs()
    {
        for (String title : allDVDs.keySet())
            System.out.println(title + ", " + allDVDs.get(title));
    }

Det skal selvfølgelig også i min kommentar fra 18:01:19 være 'allDVDs', ikke 'addDVDs'.
Avatar billede ladbye Nybegynder
20. december 2005 - 18:45 #3
Tak, accepterer dit svar nu. Men nu hvor du er her, kan det måske være at du lige kan hjælpe mig med en anden ting.

Jeg skal have lavet en funktion der sletter en given key-værdi og tilhørende value-værdi i mit hashmap. Derpå skal den returnere den slettede titel og beskrivelse, adskilt af et slash-tegn "/".

Har forsøgt, men gætter på at jeg bruger string-funktionen forkert

  public String removeDVD( String title )
  {
      return String(title + "/" + allDVDs.get(title));
      allDVDs.remove(title);
  }
Avatar billede mollevp Nybegynder
20. december 2005 - 19:37 #4
Det der er under return bliver ikke udført.. Du kunne lave lidt om så det blev noget ala.
public String removeDVD( String title )
  {
      String temp = title + "/" + allDVDs.get(title);
      allDVDs.remove(title);
      return temp;
  }
Avatar billede schwarz84 Nybegynder
20. december 2005 - 20:47 #5
ladbye: Hvilken compiler bruger du? Hos mig kommer der en advarsel hvis man skriver kode der ikke udføres (som at sætte kode efter en return).

Faktisk returnerer remove det objekt, du fjerner, så det kan skrives sådan her:

public String removeDVD( String title )
  {
      return title + "/" + allDVDs.remove(title);
  }
Avatar billede schwarz84 Nybegynder
20. december 2005 - 20:47 #6
Uden generics bliver et cast vist i øvrigt nødvendigt:
public String removeDVD( String title )
  {
      return title + "/" + (String)allDVDs.remove(title);
  }
Avatar billede ladbye Nybegynder
20. december 2005 - 20:59 #7
Takker - begge to.

Lige for at svare på dit spørgsmål schwarz84, bruger jeg noget der hedder BlueJ.
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