tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
453
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Feb 2004
    Beiträge
    592
    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?
     

  2. #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ß Tom
     
    Java 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

  3. #3
    Registriert seit
    Feb 2004
    Beiträge
    592
    equals und hashCode habe ich leider schon versucht

    Ich verwende das HashSet aus der SunAPI
     

  4. #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ß Tom
     
    Java 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

  5. #5
    Registriert seit
    Feb 2004
    Beiträge
    592
    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;
        }
     

  6. #6
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    types.hashCode() + descriptions.hashCode();
    Wie schauen denn die Implementierungen der beiden hashCode() Methoden aus?
    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ß Tom
     
    Java 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

  1. Welche Achse verwenden
    Von filigrani im Forum Adobe Flex & AIR
    Antworten: 0
    Letzter Beitrag: 28.01.09, 11:53
  2. Welche Programmiersprache verwenden?
    Von Ssal im Forum Coders Talk
    Antworten: 1
    Letzter Beitrag: 30.10.08, 15:33
  3. Welche Technologie verwenden?
    Von fsmarine im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 5
    Letzter Beitrag: 29.04.08, 09:19
  4. Welche Datenbank verwenden?
    Von flotschie im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 21.03.05, 15:05
  5. Welche Funktion von JTextArea muß ich überschreiben?
    Von ZAntjeZ im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 28.10.04, 16:54