Hashtable nicht wirklich geeignet für mein Vorhaben?

  • Themenstarter Themenstarter limaleet
  • Beginndatum Beginndatum
L

limaleet

Gast
Hallo!

Ich rätsle jetzt schon einige Zeit an einem Problem herum und frage jetzt doch lieber mal nach 😉

Eigentlich war ich von Hashmaps/Tables sehr angetan, weil sich damit sehr gut ein Updatesystem bauen lässt. Ich speichere einfach Datensätze mit einer eindeutigen ID als Key in einer Hashmap/Table. Wenn ich dann neue Datensätze in die Map einspeisen will, so muss ich nur gucken, ob der Key bereits existiert und schon habe ich Duplikate vermieten - kurz gesagt speichere ich so also nur die Datensätze in der Map ab, die noch nicht drin sind - und das fast ohne mein Zutun, nur mit der Hilfe von "containsKey()".
Das ist nicht nur die allereinfachste Methode, sie ist gleichzeitig auch 100% sicher und die Performance dürfte für das Gebotene auch ziemlich gut sein.

Der zu jedem Key gehörige Datensatz ist in Wirklichkeit aber ein Objekt, dessen Klasse von AbstractTableModel erbt. Denn jedes dieser Objekte soll als TableModel für eine JTable benutzbar sein.

An diesem Punkt bin ich mit jedoch nicht sicher, ob das überhaupt möglich ist. Denn wenn ich einem JTable so ein Model aus der Hashtable zuweisen will, dann krieg ich das Model ja nur mit get(Key) aus der Hashtable heraus. Und dann ist es ja keine Referenz, sondern der Zustand zum Zeitpunkt X. Was passiert, wenn das Model in der Hashtable "fireTableRowsUpdated" feuert? Das dürfte im JTable ja niemals ankommen und somit ist das ganze ja unbrauchbar.

Eventuell hat von euch ja jemand eine Idee, vielen Dank!
 
> Und dann ist es ja keine Referenz,

doch

> Was passiert, wenn das Model in der Hashtable "fireTableRowsUpdated" feuert?

kein Problem, nicht vorher ausprobiert?

dumm wärs nur, wenn du Duplikate hast, ein Model schon einer Table zugeordnet ist,
dann nicht in die Map reinkommt, stattdessen das frühere schon vorhandene doppelte Model später ein Event feuert
und die Table dieses Event nicht mitbekommt, eben weil sie das zweite gleiche Model hat, welches nicht in die Map reinkam
 
Zuletzt bearbeitet von einem Moderator:
ich versteh dich nicht so ganz. also erstmal nimm ne HashMap statt einer Hashtable. Ansonsten würde ich sagen das ist ein und das selbe Objekt. get(key) gibt dir die referenz zurück, die mit dem key gefunden wurde. wenn diese jetzt in eine variable gesteckt wird und sich der value in der map ändert, ist auch die variable geändernt. deshalb würde ich da nicht so zustimmen:

"Und dann ist es ja keine Referenz, sondern der Zustand zum Zeitpunkt X"

es ist eine Referenz und, wie eben schon gesagt, egal wo du das hinpackst, es bleibt ein einziges objekt! (ausser du klonst es 🙂)

edit: zu langsam 🙁
 
Oh man, zum Glück habe ich diesen Thread im Anfängerforum aufgemacht, ihr habt natürlich Recht. Habe natürlich schon getestet, aber was ich dabei getestet habe poste ich hier lieber nicht :X

Danke auf jeden Fall.
 

Zurück
Oben