Hallo,
folgendes Szenario:
Ich habe eine eigene Klasse mit relativ vielen Variablen(~50 ints, 5 Strings und einige booleans). Davon erzeuge ich dann Instanzen, maximal sind es ca. so bis 100 Stück auf einmal. Ich verwalte diese in einer Hashtable und benutze als Schlüssel java.awt.Point, da ich sehr oft die Überprüfung machen muss, ob an einer bestimmten Stelle eine dieser Instanzen ist. Aber nun muss ich auch noch ziemlich oft überprüfen, ob ein NPC (das ist meine Klasse) noch lebt. Das mache ich über den Namen, denn der ist eindeutig. Allerdings ist es nun ziemlich ineffizient, wenn ich die Hashtable von vorne bis hinten durchsuchen muss, da ich ja als Schlüssel nur die Position habe. Die verändert sich aber im Laufe der Zeit und ist deshalb kein eindeutiger Identifikator für eine Instanz.
Sollte ich eine zweite Hashtable anlegen, mit dem gleichen Inhalt der ersten und hier den Namen als Schlüssel verwenden? Denn eigentlich speichert die Hashtable ja nur Referenzen auf Objekte wenn ich das richtig verstanden habe, also sollte doch der Speichermehrbedarf nicht so gravierend sein? Oder täusche ich mich und ich sollte statt einer Hashtable lieber eine andere Datenstruktur nehmen, bei der man für beide Suchen die gleiche Zeit hätte?
folgendes Szenario:
Ich habe eine eigene Klasse mit relativ vielen Variablen(~50 ints, 5 Strings und einige booleans). Davon erzeuge ich dann Instanzen, maximal sind es ca. so bis 100 Stück auf einmal. Ich verwalte diese in einer Hashtable und benutze als Schlüssel java.awt.Point, da ich sehr oft die Überprüfung machen muss, ob an einer bestimmten Stelle eine dieser Instanzen ist. Aber nun muss ich auch noch ziemlich oft überprüfen, ob ein NPC (das ist meine Klasse) noch lebt. Das mache ich über den Namen, denn der ist eindeutig. Allerdings ist es nun ziemlich ineffizient, wenn ich die Hashtable von vorne bis hinten durchsuchen muss, da ich ja als Schlüssel nur die Position habe. Die verändert sich aber im Laufe der Zeit und ist deshalb kein eindeutiger Identifikator für eine Instanz.
Sollte ich eine zweite Hashtable anlegen, mit dem gleichen Inhalt der ersten und hier den Namen als Schlüssel verwenden? Denn eigentlich speichert die Hashtable ja nur Referenzen auf Objekte wenn ich das richtig verstanden habe, also sollte doch der Speichermehrbedarf nicht so gravierend sein? Oder täusche ich mich und ich sollte statt einer Hashtable lieber eine andere Datenstruktur nehmen, bei der man für beide Suchen die gleiche Zeit hätte?