Map mit mehrspaltigen Keys

javabar

Mitglied
Ich habe eine Klasse "Row", diese speichert einen Datensatz.
Die gesamte Tabelle wird in einer List<Row> im RAM gespeichert.

Nun möchte ich die Keys speichern, um Rows nach Primärschlüsseln zu finden und um "DUPLICATE KEYS" zu vermeiden.
Diese verwalte ich über eine Map<Object, Integer>, im Object steht der Key, im Integer die Nummer der Zeile.

Wenn der Key nur aus einem Objekt besteht, ist es kein Problem, wenn er aber auch aus mehreren Objekten bestehen können soll, in Datenbanken wird sowas als "COMPOSITE ID" bezeichnet, wie kann ich das implementieren?

Viele Grüße

Egon Schmid
 
B

bygones

Gast
eine eigene Klasse, die alle relevanten Werte haelt und equals bzw hashCode ueberschreiben
 

faetzminator

Gesperrter Benutzer
Warum verwendest du statt [c]List<Row>[/c] und [c]Map<SomeClass, Integer>[/c] nicht gleich eine [c]Map<SomeClass, Row>[/c]? Wenn die Daten die Reihenfolge beibehalten sollen, kann man immer noch statt einer [c]HashMap[/c] eine [c]LinkedHashMap[/c] verwenden.
 

javabar

Mitglied
Ich möchte die Tabelle auch über eine JTable anzeigen und bearbeiten können, und ohne dass sie gleich in eine Datenbank zurückgeschrieben werden.

(Die Tabelle merkt sich auch alte und neue Werte...)

Einen Bezug zur Zeilennummer brauche ich, oder nicht unbedingt?

Und ein "Primary Key" ist auch nicht immer erforderlich.

Grüße

Egon
 

HimBromBeere

Top Contributor
Einen Bezug zur Zeilennummer brauche ich, oder nicht unbedingt?
Wenn du, wie mein Vorredner bereits angedeutet hat, eine Map verwendest, wird dich die Zeilennummer annähernd nicht interessieren, da jeglicher Zugriff ja über deinen Schlüssel passiert (in deinem Fall ist der Schlüssel ein (nichtprimitives) Objekt (bisschen doppelt.gemoppelt, oder?)).
Ob du die Daten aber in einer Tabelle anzeigen kannst, hängt doch nicht von der VErwendung einer bestimmten Collection ab... du musst hin wie her irgendie durch die Collection durchiterieren...
 

Aldimann

Bekanntes Mitglied
Mir ist irgendwie der gesamte zusammenhang noch nicht ganz klar geworden. Es soll etwas vom Typ Row in einer Datenbank gespeichert werden und über einen PK adressiert werden.

Naja, dann ist für mich der PK eigentlich ein Attribut der Klasse Row und die Duplikate vermeide ich indem ich in Row Equals und HashCode implementiere und statt einer List ein Set verwende...!?
 

Ähnliche Java Themen


Oben