webForumDet fria alternativet
Logga in / Bli medlem

Loopa ut ett HashSet

Java

4 svar · 292 visningar · startad av Compusa

Medlem sedan jan. 20023 327 inlägg
Frågan#1

Använder följande kod för att lopa ut nycklarna i mitt hash set, hur ska jag gå till väga för att inte bara få ut nycklarna utan också värdet som de representerar?

    public String printItemInfo()
    {
        String returnString = "Föremål i rummet: ";
        Set keys = itemsInRoom.keySet();
        for(Iterator iter = keys.iterator(); iter.hasNext(); )
            returnString += " " + iter.next();
        return returnString;
    }
Medlem sedan jan. 20023 327 inlägg
#2

Någon?

Medlem sedan aug. 20021 752 inlägg
#3

Du får ta det värde som du får i "iter.next()" och hämta ut det data som är assosierat med den nyckeln,

public String printItemInfo()
{
        String returnString = "Föremål i rummet: ";
        Iterator iter=itemsInRoom.keySet().iterator();
        //Jag förutsätter att nycklarna är av typen String
        String room=null;
        while(iter.hasNext())
        {
             room=(String)iter.next();
             returnString+=" Rum: "+room+", "+itemsInRoom.get(room);
        }
        return returnString;
}

/Viktor

Medlem sedan jan. 20023 327 inlägg
#4

Tack för svaret Victor. Sitter med ett Zuul-projekt (textbaserat spel). Har en klass som heter rum och en som heter item. Varje rum ska kunna ha ett obegränsat antal items. Vad jag kom fram till så är det bättre att använda en ArrayList i detta fall eller är jag helt ute och cyklar? Fungerar bra hittills.

ArrayList måste väl vara det ultimata för att spara objektinstanser av Item? koden blev hur som helst mycket snyggare, enklare osv.

Medlem sedan aug. 20021 752 inlägg
#5

Du kan ju spara din ArrayList som värdet i din HashTable,

Iterator iter=itemsInRoom.keySet().iterator();
List list=null;
String room=null;
while(iter.hasNext())
{
    room=(String)iter.next();
    list=(ArrayList)itemsInRoom.get(room);
    System.out.println("I rum "+room+" finns,");
    for(int i=0;i<list.size();i++)
         System.out.println(list.get(i));
}

/Viktor

253 ms totalt · 4 externa anrop · v20260731065814-full.0bc6e834
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)