ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
453
453
EMPFEHLEN
-
Hi,
ich habe folgendes Problem. Es gibt eine Bean die ein Set beinhaltet. Diese Bean ist persistent in der Datenbank gespeichert. Jetzt besorge ich mir anhand des Keys die Bean aus der DB (oder evtl null falls nicht vorhanden), dann werden jeweils andere Beans erzeugt und mit Daten gefüllt (die Bean erhält die id von der DB zugewiesen, deshalb ist diese Property noch nicht gesetzt). Jetzt möchte ich überprüfen ob das Set schon eine solche Bean enthält oder ob ich diese ins Set mit aufnehmen muss.
Welche Methoden muss ich in der Bean überschreiben um das contains eines Sets zu verwenden?
-
25.05.05 22:54 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Kommt auf die konkrete Set-Implementierung an. Versuchs mal mit equals(...) und hashcode(...) .
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
equals und hashCode habe ich leider schon versucht

Ich verwende das HashSet aus der SunAPI
-
25.05.05 23:02 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Dann scheint wohl deine hashcode() Implementierung nicht richtig zu funktionieren.
HashSet verwendet intern eine HashMap zum speichern der Elemente. Diese Implementierung sieht zwei Elemente als "gleich" an wenn sie beide den selben hashcode() erzeugen.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
meine überschriebene hashCode Implementierung sieht wie folgt aus.
Code :1 2 3 4 5 6 7
public int hashCode() { int code = types.hashCode() + descriptions.hashCode();; System.out.println("CODE EXPORT_DEF_TPL [" + types + ", " + descriptions + "]: " + code); return code; }
-
25.05.05 23:17 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Wie schauen denn die Implementierungen der beiden hashCode() Methoden aus?types.hashCode() + descriptions.hashCode();
Sind das die Implementierungen von Object? Das wird dann nicht funktionieren...
Implementiere hashCode() so, dass alle Attribut Werte bzw. die Attribut Werte die eindeutig eine Geschäftsobjekt Identifizieren (BusinessKey) in die Berechnung des hashCode() einfließen. Weiterhin sollte man wenn man hashCode() überschreibt immer equals( ...) mit überschreiben. Die Ergebnisse von equals und hashcode sollten korrespondieren, dass heißt wenn zwei Objekte laut equals gleich sind sollten ihre hashCode()-Werte auch übereinstimmen.
siehe auch:
http://www.langer.camelot.de/Article...1.Equals1.html
http://www.langer.camelot.de/Article...2.Equals2.html
http://www.langer.camelot.de/Article...de.html#Kreft1
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
Welche Achse verwenden
Von filigrani im Forum Adobe Flex & AIRAntworten: 0Letzter Beitrag: 28.01.09, 11:53 -
Welche Programmiersprache verwenden?
Von Ssal im Forum Coders TalkAntworten: 1Letzter Beitrag: 30.10.08, 15:33 -
Welche Technologie verwenden?
Von fsmarine im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 5Letzter Beitrag: 29.04.08, 09:19 -
Welche Datenbank verwenden?
Von flotschie im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 21.03.05, 15:05 -
Welche Funktion von JTextArea muß ich überschreiben?
Von ZAntjeZ im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 28.10.04, 16:54





Zitieren

Login





