webForumDet fria alternativet

Loopa ut ett HashSet

4 svar · 292 visningar · startad av Compusa

CompusaMedlem sedan jan. 20022 952 inlägg
#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;
    }
CompusaMedlem sedan jan. 20022 952 inlägg
#2

Någon?

ViktorMedlem sedan aug. 20021 710 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

CompusaMedlem sedan jan. 20022 952 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.

ViktorMedlem sedan aug. 20021 710 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

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb