Beziehungen zwischen HashMaps

Status
Nicht offen für weitere Antworten.
M

Michael0815

Gast
Hallo zusammen,

ich versuche mir gerade ein kleines Programm zu erstellen.

Dazu möchte ich 2 Tabellen, und die dazugehörige Beziehungstabelle importieren.
(sind derzeit noch Textdateien - wird später mal ne DB)

Die beiden Haupttabellen klappen gaz gut - da nehme ich jeweils eine HashMap und den Primärschlüssel der Tabelle als Key.
Nur wie kann ich die Beziehungstabelle in Java realisieren?
Es sollen m zu n Beziehungen möglich sein, und daher scheiden Maps an der Stelle ja aus, da ich keinen Schlüssel doppelt verwenden kann.

Ich hab schon an n einfaches 2-dimensionales String-Array gedacht (das ließe sich dann auch leicht befüllen) - nur ist es hier halt umständlich zu überprüfen, ob eine bestimmte Schlüssel-Schlüssel-Kombination auch vorhanden ist.

Gibt es da auch ne effektivere Möglichkeit?

Danke und Gruß,
Michael
 

Bleiglanz

Gesperrter Benutzer
die Beziehung direkt in die WertObjekte aufnehmen

als Referenz!

nach dem Motto

Autor autor = Buch.getAutor();
 
M

Michael0815

Gast
@Bleiglanz
die Beziehung direkt aufnehmen geht ja leider nicht, da es sich um m zu n - Beziehungen handelt (ein Buch mit mehreren Autoren)...

@Sebastian
ArrayList sieht ganz gut aus - und dann Kontrolle über einen Iterator und contains()...werd ich morgen früh mal testen.

Danke und Gruß, Michael
 
M

Michael0815

Gast
die ArrayList will dann doch nicht ganz so - ich glaub, ich hab da n ziemlichen Denkfehler.

mit
Code:
bezListe.add(new BezEintrag(aid,bid));
lege ich einen neuen Eintrag in der Liste der Beziehungen an.

Später will ich dann testen, ob eine bestimmte Beziehung in der Liste vorhanden ist, und mache das über
Code:
bezListe.contains(new BezEintrag(aid,bid))
Das funktioniert aber nicht (liefert immer false).

Kann das überhaupt funktionieren, wenn ich bei der Kontrolle ein neues BezEintrag-Objekt erzeuge und zum Vergleich nutze?

Gruß, Michael
 

Bleiglanz

Gesperrter Benutzer
wahrscheinlich bist du schneller dran, wenn du ein paar Stunden in Hibernate investierst, das würde dir
Code:
Collection c = buch.getAutoren();
automatisch liefern

derart O/R-Mapping von Hand zu machen ist nicht direkt schön oder interessant (weils eben schon so viele gemacht haben...)
 
M

Michael0815

Gast
Hibernate werde ich dann auch nutzen, sobald die Datenbank dahinter steht...

bin nur gerade n bisschen am einarbeiten in JAVA - und da probier ich gerne so kuriose Sachen ;)

hab's jetzt ganz einfach über ein TreeSet realisiert, dessen Objekte jeweils eine Zusammensetzung aus aid&bid sind - keine ideale Lösung, aber zum Testen reichts...

Danke für die Denkanstöße - Michael
 

SnooP

Top Contributor
bezListe.contains(new BezEintrag(aid,bid)) kann natürlich nicht funktionieren. Contains prüft ob das übergebene Objekt in der Liste enthalten ist - wenn du es dort per new erzeugst, kann es ja nicht in der liste existieren... du musst dann schon dasselbe objekt halten.

Die einzige Möglichkeit wäre da per return .equals jedes Objekt der Liste zu vergleichen.
 
B

bygones

Gast
SnooP hat gesagt.:
bezListe.contains(new BezEintrag(aid,bid)) kann natürlich nicht funktionieren. Contains prüft ob das übergebene Objekt in der Liste enthalten ist - wenn du es dort per new erzeugst, kann es ja nicht in der liste existieren... du musst dann schon dasselbe objekt halten..
nicht ganz richtig...

Die Klasse muss die Methode equals ueberschreiben (bzw bei hashed Collections nocht hashCode), dann geht das ohne Probleme

Code:
public class Test {
	public static void main( String[] args ) {
		Collection c = new ArrayList();
		c.add( new T( "1", "2" ) );
		System.out.println( c.contains( new T( "1", "2" ) ) );
	}
}

class T {
	public T( String s, String t ) {
		this.s = s;
		this.t = t;
	}
	
	public boolean equals(Object o) {
		if(!(o instanceof T)) {
			return false;
		}
		T tt = (T)o;
		return s.equals(tt.s) && t.equals(tt.t);
	}

	String s;
	String t;
}
liefert true....

d.h. contains ueberprueft nicht, ob es das selbe Object ist, aber ob es das gleiche ist !
 
M

Michael0815

Gast
@Sebastian
den Spaß werd ich bestimmt haben (endlich was, das ich schon beherrsche - SQL ;) ) - aber die Probleme kommen sicher auch.

@SnooP
sowas dachte ich mir, deshalb bin ich jetzt auf das TreeSet umgestiegen und simuliere mir meine RDB mit m-zu-n-Beziehung durch 3 Textdateien :)

@DbaC
das verstehe ich jetzt nicht ganz.
Ich überschreibe die equals()-Methode, und dadurch funktioniert dann auch contains() anders?
also geht contains() einfach alle Objekte der Reihe nach durch, und vergleicht sie mit equals() mit den Vorgabewerten?

Gruß, Michael
 
B

bygones

Gast
Michael0815 hat gesagt.:
@DbaC
das verstehe ich jetzt nicht ganz.
Ich überschreibe die equals()-Methode, und dadurch funktioniert dann auch contains() anders?
also geht contains() einfach alle Objekte der Reihe nach durch, und vergleicht sie mit equals() mit den Vorgabewerten?
contains geht im Prinzip durch die Collection und überprüft per equals, ob das aktuelle Element gleich dem Parameter ist.

D.h. wenn du mit eigenen Klassen arbeitest, musst du die equals Methode überschreiben, so dass ein Aufruf von contains dir das richtige Ergebnis zurückgibt
 

Bleiglanz

Gesperrter Benutzer
Wichtig: überschreib IMMER hashCode wenn du equals überschreibst!

das eine zu tun und das andere zu lassen (weil etwa im Moment keine "hashed" Collections zum Einsatz kommen usw.) wäre ganz ganz schlechter Stil
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Student Beziehungen zwischen Klassen - wie strukturiere ich das? Java Basics - Anfänger-Themen 23
T 1:1 Beziehungen realisieren ? Java Basics - Anfänger-Themen 13
M [Hibernate] Speichern von ManyToOne-Beziehungen in der DB Java Basics - Anfänger-Themen 12
B hsqldb (beziehungen zw. Tabellen) Java Basics - Anfänger-Themen 8
U Implementation von Beziehungen Java Basics - Anfänger-Themen 4
E n:1 Beziehungen umsetzen Java Basics - Anfänger-Themen 13
G Beziehungen in Java ! Beispiele ! Java Basics - Anfänger-Themen 5
T Beziehungen erstellen? Java Basics - Anfänger-Themen 17
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
rafi072001 Assoziation zwischen Musiker und Label Java Basics - Anfänger-Themen 1
I Best Practice Saubere Verbindung zwischen API und Business Layer mit DTO's Java Basics - Anfänger-Themen 2
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
W User zwischen Optionen wählen lassen Java Basics - Anfänger-Themen 1
I Differenz zwischen LocalDateTime Java Basics - Anfänger-Themen 4
Leo_1789 Differenz ausrechnen zwischen denn idealgewicht und denn echten Gewicht Java Basics - Anfänger-Themen 7
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
NeoLexx Zuweisungskompatibilität zwischen Vererbungsbeziehungen (Polymorphie) Java Basics - Anfänger-Themen 18
L Threads Synchronisierung zwischen threads Java Basics - Anfänger-Themen 4
N Berührung zwischen Rechtecken Java Basics - Anfänger-Themen 5
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
J Wert zwischen JFrames übergeben Java Basics - Anfänger-Themen 2
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
A Kommunikation zwischen nebenläufigen Threads Java Basics - Anfänger-Themen 4
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
D Zufallszahl zwischen 10 und 99? Java Basics - Anfänger-Themen 5
J Objektzugriff zwischen disjunkten Klassen Java Basics - Anfänger-Themen 1
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
X Input/Output Höchste Temperaturschwankung zwischen 2 Tagen Java Basics - Anfänger-Themen 2
Bluedaishi der Monat zwischen zwei Datumsangaben Java Basics - Anfänger-Themen 15
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
S Erste Schritte Zwischen zwei Punkten ein Minimumpkt./Maxima finden Java Basics - Anfänger-Themen 1
K Klassen Array zwischen Klassen übergeben Java Basics - Anfänger-Themen 2
Arif OOP Die Bindung zwischen einem äußeren und einem inneren Objekt Java Basics - Anfänger-Themen 2
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
F Klassen Kommunikation zwischen Klassen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
V Zufallswert zwischen zwei Zahlen a und b Java Basics - Anfänger-Themen 12
H Datentypen Tage zwischen zwei Datums berechnen Java Basics - Anfänger-Themen 4
M Variable zwischen Klassen übergeben Java Basics - Anfänger-Themen 5
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
B Distanz zwischen zwei Punkten Java Basics - Anfänger-Themen 4
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
S Leerzeichen zwischen zwei Zeichen im String entfernen Java Basics - Anfänger-Themen 19
N Werte zwischen Klassen austauschen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
Thallius Best Practice Events zwischen eigenen Klassen Java Basics - Anfänger-Themen 2
A if-Anweisung zwischen zwei Punkten Java Basics - Anfänger-Themen 1
S Erste Schritte TAB-Wechsel zwischen TextFields Java Basics - Anfänger-Themen 1
B Relativer Pfad zwischen zwei Files Java Basics - Anfänger-Themen 2
M Drag & Drop - Interaktion zwischen Java und dem OS Java Basics - Anfänger-Themen 1
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
Z Differenz zwischen 2 Daten berechnen, ohne importiere Funktionen! Java Basics - Anfänger-Themen 10
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
M Länge der Strecke zwischen zwei Punkten Java Basics - Anfänger-Themen 10
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
T zwischen den Strings soll ein plus(+) stehen Java Basics - Anfänger-Themen 5
S Methoden Tage zwischen 2 Daten Java Basics - Anfänger-Themen 19
M Typcasting zwischen ganzen Zahlen Java Basics - Anfänger-Themen 7
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
N Winckel zwischen zwei Punkten Java Basics - Anfänger-Themen 9
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
J Regex um Inhalte zwischen Tags zu ignorieren Java Basics - Anfänger-Themen 2
F Info zwischen verschiedene Klassen austauschen Java Basics - Anfänger-Themen 4
W Variablen zwischen Klassen übertragen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben