Hashmap

Gast
Gast

Hashmap

Beitrag von Gast »

so wie ich das jetzt versteh sollen wir in der klasse in der die inventoryEntry zu finden ist als hashmap speichern HashMap< String, Integer> und nicht als InventoryEntry[], oder?


dann sollen mit den methoden, wie in den move OnMinerals tests gegeben bei der get-methode

GuiInventoryEntry[] mapToInventory(Map<String, Integer> map)


und bei der set methode

Map<String, Integer> inventoryToMap(GuiInventoryEntry[] inventory)

benutzen um unser HashMap zu bearbeiten...soweit korrekt?

Benutzeravatar
5seconds
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 155
Registriert: 27. Apr 2013 10:44

Re: Hashmap

Beitrag von 5seconds »

Das Inventory musst du nicht als HashMap speichern, du kannst es auch mit einem InventoryEntry-Array und Schleifen machen.
Weil es im Inventar keine Reihenfolge gibt, in der die Items dein sind, kann es aber einfacher sein, es intern als HashMap zu verwalten (Dann ist das Hinzufügen und Entfernen von Items sehr bequem). Wenn du das so machen möchtest, darfst du die mapToInventory- und inventoryToMap-Methoden nutzen.

Gast
Gast

Re: Hashmap

Beitrag von Gast »

Das Inventory musst du nicht als HashMap speichern, du kannst es auch mit einem InventoryEntry-Array und Schleifen machen.
Weil es im Inventar keine Reihenfolge gibt,
Das habe ich vorher so gemacht. Meine set und get methoden suchen das item (String) heraus und bearbeiten dann die amount-variable. Nur im Konstruktor muss ich das array initialisieren.
So funktioniert alles, aber der MoveOn Mineral test meckert.

Dann implementiere ich das array als HashMap , schreibe die set und get methoden um und bekomme lauter nullpointer exceptions. Ich werde aus dieser Saceh nicht schlau.
Wie kann es denn bitte zur einer Nullpointer exception kommen, wenn mein array bereits im Konstruktor initialisiert wurde?

Mich würde wirklich interessieren welchen Sinn dieser Test hat? Mein Array funktioniert nämlich und meine methoden tun alles wie es die Aufgabenstellung verlangt.

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Hashmap

Beitrag von SophiaLi1 »

Für NullPointerExceptions kann es viele Möglichkeiten geben, aber wenige davon im Zusammenhang mit Arrays. NullPointer kommen vor, wenn du auf ein Objekt zugreifen willst, das nicht existiert, z.B. wenn du eine Methode eines Objekts in dessen Konstruktor aufrufen willst, also während das Objekt noch nicht existiert.

Wenn der Test fehl schlägt, dann funktioniert meistens etwas nicht so, wie es soll (logisch), also würde ich dir raten, den Test mal mit dem Debugger durchzugehen.

Benutzeravatar
5seconds
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 155
Registriert: 27. Apr 2013 10:44

Re: Hashmap

Beitrag von 5seconds »

Wenn davor die set- und get-Methode und das Hinzufügen von Items schon gut funktioniert hat, würde ich an deiner Stelle auch nicht auf eine Map umsteigen. Wie schon gesagt wurde, solltest du mit dem Debugger versuchen herauszufinden, wo die Exception herkommt.

Benutzeravatar
aDramaQueen
Mausschubser
Mausschubser
Beiträge: 84
Registriert: 10. Jan 2014 16:34

Re: Hashmap

Beitrag von aDramaQueen »

Kann man eigentlich über ne HashMap iterieren? Ich will gerade meine HashMap in dieses GuiInventoryEntry-Array konvertieren und dachte mir, dass das mit nem Iterator am bequemsten ist.
Nun bekomm ich aber die Fehlermeldung, dass die methode iterator() nicht existiert:

Iterator <GuiInventoryEntry> entry = inventory.iterator(); ------> cannot find symbol - method iterator()

Hinweis:
inventory ist meine HashMap
iterator wurde auch schon importiert
Bild
...Never go full retard...

topracer
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 10. Jan 2014 19:14

Re: Hashmap

Beitrag von topracer »

Hab nichts mit nem Iterator gemacht, aber hast du hier schon mal geschaut? Vielleicht steht da was, was dir helfen könnte: http://openbook.galileocomputing.de/jav ... 8f3464f59d

Benutzeravatar
5seconds
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 155
Registriert: 27. Apr 2013 10:44

Re: Hashmap

Beitrag von 5seconds »

Bei einer HashMap geht das nicht direkt, aber du kannst über eine Set (Menge) iterieren. Mit deineHashMap.entrySet() wandelst du die Map in eine Set (Menge) von Entries (Einträgen) um, über die du dann iterieren kannst.

z. B.:

Code: Alles auswählen

HashMap<String, Integer> dhm = blabla;
Iterator<Entry<String, Integer>> iterator = dhm.entrySet().iterator();
 while(iterator.hasNext()) {
   Entry<String, Integer> entry = iterator.next();
   String derSchluessel = entry.getKey();
   int derWert = entry.getValue();
   ...
}
EDIT: Natürlich dann auch java.util.Map.Entry importieren :wink:

Benutzeravatar
aDramaQueen
Mausschubser
Mausschubser
Beiträge: 84
Registriert: 10. Jan 2014 16:34

Re: Hashmap

Beitrag von aDramaQueen »

Bbbbbboooooommmmmmbbbbbbeeeee!!!
THX
Bild
...Never go full retard...

Jul
Gast

Re: Hashmap

Beitrag von Jul »

Hi,

habe auch eine frage zur HashMap, aber nicht genau zur Inventory. Hoffe das ist hier trotzdem ok:

ich will eine HashMap in meiner Imodel-instanz verwenden, aber der Debugger sagt mir dass er die Klasse nicht kennt. Was muss ich dann importieren? Auf der Oracle-Seite steht die Hierarchie (?) java.util.HashMap<K, V> . muss ich dann einfach nur

Code: Alles auswählen

import java.util.HashMap <K, V>
an den Anfang schreiben?

Vielen Dank, Jul

topracer
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 10. Jan 2014 19:14

Re: Hashmap

Beitrag von topracer »

Einfach nur

import java.util.HashMap;

Jul
Gast

Re: Hashmap

Beitrag von Jul »

Ah Cool, Danke!

Antworten

Zurück zu „Archiv“